mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
hs: Always check if the hs_ident is available when processing a cell
Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
e62b8bce5a
commit
83aecca561
@ -40,7 +40,14 @@ rend_process_relay_cell(circuit_t *circ, const crypt_path_t *layer_hint,
|
|||||||
int r = -2;
|
int r = -2;
|
||||||
if (CIRCUIT_IS_ORIGIN(circ)) {
|
if (CIRCUIT_IS_ORIGIN(circ)) {
|
||||||
origin_circ = TO_ORIGIN_CIRCUIT(circ);
|
origin_circ = TO_ORIGIN_CIRCUIT(circ);
|
||||||
if (!layer_hint || layer_hint != origin_circ->cpath->prev) {
|
|
||||||
|
/* Opened onion service circuit receiving cell MUST have an hs_ident as it
|
||||||
|
* is the underlying assumption else we can't process the cell. If this is
|
||||||
|
* the case, we can't recover so close the circuit. */
|
||||||
|
if (BUG(!origin_circ->hs_ident)) {
|
||||||
|
circuit_mark_for_close(circ, END_CIRC_REASON_INTERNAL);
|
||||||
|
origin_circ = NULL;
|
||||||
|
} else if (!layer_hint || layer_hint != origin_circ->cpath->prev) {
|
||||||
log_fn(LOG_PROTOCOL_WARN, LD_APP,
|
log_fn(LOG_PROTOCOL_WARN, LD_APP,
|
||||||
"Relay cell (rend purpose %d) from wrong hop on origin circ",
|
"Relay cell (rend purpose %d) from wrong hop on origin circ",
|
||||||
command);
|
command);
|
||||||
|
Loading…
Reference in New Issue
Block a user