mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Add explicit check for 0-length extend2 cells
This is harmless in the Tor of today, but important for correctness. Fixes bug 10536; bugfix on 0.2.4.8-alpha. Reported by "cypherpunks".
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
|
||||
o Minor bugfixes:
|
||||
- Reject 0-lenth EXTEND2 cells more expicitly. Previously our code would
|
||||
reject them a bit later than it should have. This bug is
|
||||
harmless. Fixes bug 10536; bugfix on 0.2.4.8-alpha. Reported by
|
||||
"cypherpunks".
|
||||
+5
-2
@@ -860,14 +860,17 @@ extend_cell_parse(extend_cell_t *cell_out, const uint8_t command,
|
||||
}
|
||||
case RELAY_COMMAND_EXTEND2:
|
||||
{
|
||||
uint8_t n_specs = *payload, spectype, speclen;
|
||||
uint8_t n_specs, spectype, speclen;
|
||||
int i;
|
||||
int found_ipv4 = 0, found_ipv6 = 0, found_id = 0;
|
||||
tor_addr_make_unspec(&cell_out->orport_ipv4.addr);
|
||||
tor_addr_make_unspec(&cell_out->orport_ipv6.addr);
|
||||
|
||||
if (payload_length == 0)
|
||||
return -1;
|
||||
|
||||
cell_out->cell_type = RELAY_COMMAND_EXTEND2;
|
||||
++payload;
|
||||
n_specs = *payload++;
|
||||
/* Parse the specifiers. We'll only take the first IPv4 and first IPv6
|
||||
* address, and the node ID, and ignore everything else */
|
||||
for (i = 0; i < n_specs; ++i) {
|
||||
|
||||
Reference in New Issue
Block a user