From: teor Date: Tue, 14 Apr 2020 05:53:17 +0000 (+1000) Subject: core/or: Check extends for zero addresses and ports X-Git-Tag: tor-0.4.5.0-alpha-dev~45^2~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=587a7fbcf62447c7ade05c57220f1bfe2f3acdc1;p=thirdparty%2Ftor.git core/or: Check extends for zero addresses and ports Check for invalid zero IPv4 addresses and ports, when sending and receiving extend cells. Fixes bug 33900; bugfix on 0.2.4.8-alpha. --- diff --git a/changes/bug33900 b/changes/bug33900 new file mode 100644 index 0000000000..c1649d2284 --- /dev/null +++ b/changes/bug33900 @@ -0,0 +1,3 @@ + o Minor bugfixes (IPv4, relay): + - Check for invalid zero IPv4 addresses and ports, when sending and + receiving extend cells. Fixes bug 33900; bugfix on 0.2.4.8-alpha. diff --git a/src/core/or/onion.c b/src/core/or/onion.c index 543d9f3e47..d73f981d2c 100644 --- a/src/core/or/onion.c +++ b/src/core/or/onion.c @@ -244,14 +244,14 @@ check_extend_cell(const extend_cell_t *cell) if (tor_digest_is_zero((const char*)cell->node_id)) return -1; - if (tor_addr_family(&cell->orport_ipv4.addr) == AF_UNSPEC) { + if (!tor_addr_port_is_valid_ap(&cell->orport_ipv4, 0)) { /* EXTEND cells must have an IPv4 address. */ if (!is_extend2) { return -1; } /* EXTEND2 cells must have at least one IP address. * It can be IPv4 or IPv6. */ - if (tor_addr_family(&cell->orport_ipv6.addr) == AF_UNSPEC) { + if (!tor_addr_port_is_valid_ap(&cell->orport_ipv6, 0)) { return -1; } }