mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 07:07:52 +01:00
address/resolve: try harder to avoid returning uninitialised data
Cleanup after 30721.
This commit is contained in:
parent
fb93646c1c
commit
308d300213
2 changed files with 18 additions and 3 deletions
|
@ -1760,6 +1760,13 @@ tor_addr_port_parse(int severity, const char *addrport,
|
||||||
retval = 0;
|
retval = 0;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
/* Clear the address and port on error, to avoid returning uninitialised or
|
||||||
|
* partly parsed data.
|
||||||
|
*/
|
||||||
|
if (retval == -1) {
|
||||||
|
memset(address_out, 0, sizeof(tor_addr_t));
|
||||||
|
*port_out = 0;
|
||||||
|
}
|
||||||
tor_free(addr_tmp);
|
tor_free(addr_tmp);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -1828,7 +1835,6 @@ tor_addr_port_split(int severity, const char *addrport,
|
||||||
tor_free(address_);
|
tor_free(address_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (port_out)
|
|
||||||
*port_out = ok ? ((uint16_t) port_) : 0;
|
*port_out = ok ? ((uint16_t) port_) : 0;
|
||||||
|
|
||||||
return ok ? 0 : -1;
|
return ok ? 0 : -1;
|
||||||
|
|
|
@ -47,6 +47,11 @@ tor_lookup_hostname,(const char *name, uint32_t *addr))
|
||||||
tor_addr_t myaddr;
|
tor_addr_t myaddr;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if (BUG(!addr))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
*addr = 0;
|
||||||
|
|
||||||
if ((ret = tor_addr_lookup(name, AF_INET, &myaddr)))
|
if ((ret = tor_addr_lookup(name, AF_INET, &myaddr)))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -250,7 +255,7 @@ int
|
||||||
tor_addr_port_lookup(const char *s, tor_addr_t *addr_out, uint16_t *port_out)
|
tor_addr_port_lookup(const char *s, tor_addr_t *addr_out, uint16_t *port_out)
|
||||||
{
|
{
|
||||||
tor_addr_t addr;
|
tor_addr_t addr;
|
||||||
uint16_t portval;
|
uint16_t portval = 0;
|
||||||
char *tmp = NULL;
|
char *tmp = NULL;
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
|
|
||||||
|
@ -273,6 +278,10 @@ tor_addr_port_lookup(const char *s, tor_addr_t *addr_out, uint16_t *port_out)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
err:
|
err:
|
||||||
|
/* Clear the address and port on error */
|
||||||
|
memset(addr_out, 0, sizeof(tor_addr_t));
|
||||||
|
if (port_out)
|
||||||
|
*port_out = 0;
|
||||||
tor_free(tmp);
|
tor_free(tmp);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue