mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
scan-build: Avoid crashing on BUG in circuit_get_by_rend_token_and_purpose
If we fail in circuit_get_by_rend_token_and_purpose because the
circuit has no rend_info, don't try to reference fiends from its
rend_info when logging an error. Bugfix on 8b9a2cb68
, which is
going into Tor 0.2.5.4-alpha.
This commit is contained in:
parent
d1be2f5cf8
commit
0fd0f5f7a9
@ -1261,8 +1261,16 @@ circuit_get_by_rend_token_and_purpose(uint8_t purpose, int is_rend_circ,
|
||||
circ->base_.marked_for_close)
|
||||
return NULL;
|
||||
|
||||
if (!circ->rendinfo ||
|
||||
! bool_eq(circ->rendinfo->is_rend_circ, is_rend_circ) ||
|
||||
if (!circ->rendinfo) {
|
||||
char *t = tor_strdup(hex_str(token, REND_TOKEN_LEN));
|
||||
log_warn(LD_BUG, "Wanted a circuit with %s:%d, but lookup returned a "
|
||||
"circuit with no rendinfo set.",
|
||||
safe_str(t), is_rend_circ);
|
||||
tor_free(t);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (! bool_eq(circ->rendinfo->is_rend_circ, is_rend_circ) ||
|
||||
tor_memneq(circ->rendinfo->rend_token, token, REND_TOKEN_LEN)) {
|
||||
char *t = tor_strdup(hex_str(token, REND_TOKEN_LEN));
|
||||
log_warn(LD_BUG, "Wanted a circuit with %s:%d, but lookup returned %s:%d",
|
||||
|
Loading…
Reference in New Issue
Block a user