Merge remote-tracking branch 'rl1987/bug26525'

This commit is contained in:
Nick Mathewson 2018-07-09 09:31:12 -04:00
commit 03283c00d8
6 changed files with 27 additions and 26 deletions

4
changes/bug26525 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (code quality):
- Rename sandbox_getaddrinfo() and other functions to no longer
misleadingly suggest that they are sandbox-only. Fixes bug
26525; bugfix on 0.2.7.1-alpha.

View File

@ -3677,7 +3677,7 @@ tor_free_all(int postfork)
routerparse_free_all();
ext_orport_free_all();
control_free_all();
sandbox_free_getaddrinfo_cache();
tor_free_getaddrinfo_cache();
protover_free_all();
bridges_free_all();
consdiffmgr_free_all();
@ -3899,7 +3899,7 @@ init_addrinfo(void)
// host name to sandbox
gethostname(hname, sizeof(hname));
sandbox_add_addrinfo(hname);
tor_add_addrinfo(hname);
}
static sandbox_cfg_t*

View File

@ -277,7 +277,7 @@ tor_addr_lookup,(const char *name, uint16_t family, tor_addr_t *addr))
memset(&hints, 0, sizeof(hints));
hints.ai_family = family;
hints.ai_socktype = SOCK_STREAM;
err = sandbox_getaddrinfo(name, NULL, &hints, &res);
err = tor_getaddrinfo(name, NULL, &hints, &res);
/* The check for 'res' here shouldn't be necessary, but it makes static
* analysis tools happy. */
if (!err && res) {
@ -306,7 +306,7 @@ tor_addr_lookup,(const char *name, uint16_t family, tor_addr_t *addr))
&((struct sockaddr_in6*)best->ai_addr)->sin6_addr);
result = 0;
}
sandbox_freeaddrinfo(res);
tor_freeaddrinfo(res);
return result;
}
return (err == EAI_AGAIN) ? 1 : -1;

View File

@ -121,16 +121,16 @@ sandbox_disable_getaddrinfo_cache(void)
}
void
sandbox_freeaddrinfo(struct addrinfo *ai)
tor_freeaddrinfo(struct addrinfo *ai)
{
if (sandbox_getaddrinfo_cache_disabled)
freeaddrinfo(ai);
}
int
sandbox_getaddrinfo(const char *name, const char *servname,
const struct addrinfo *hints,
struct addrinfo **res)
tor_getaddrinfo(const char *name, const char *servname,
const struct addrinfo *hints,
struct addrinfo **res)
{
int err;
struct cached_getaddrinfo_item_t search, *item;
@ -191,7 +191,7 @@ sandbox_getaddrinfo(const char *name, const char *servname,
}
int
sandbox_add_addrinfo(const char *name)
tor_add_addrinfo(const char *name)
{
struct addrinfo *res;
struct addrinfo hints;
@ -204,16 +204,16 @@ sandbox_add_addrinfo(const char *name)
hints.ai_family = families[i];
res = NULL;
(void) sandbox_getaddrinfo(name, NULL, &hints, &res);
(void) tor_getaddrinfo(name, NULL, &hints, &res);
if (res)
sandbox_freeaddrinfo(res);
tor_freeaddrinfo(res);
}
return 0;
}
void
sandbox_free_getaddrinfo_cache(void)
tor_free_getaddrinfo_cache(void)
{
cached_getaddrinfo_item_t **next, **item, *this;
@ -229,7 +229,7 @@ sandbox_free_getaddrinfo_cache(void)
}
void
sandbox_make_getaddrinfo_cache_active(void)
tor_make_getaddrinfo_cache_active(void)
{
sandbox_getaddrinfo_is_active = 1;
}

View File

@ -22,27 +22,24 @@ MOCK_DECL(int,tor_lookup_hostname,(const char *name, uint32_t *addr));
struct addrinfo;
#ifdef USE_SANDBOX_GETADDRINFO
/** Pre-calls getaddrinfo in order to pre-record result. */
int sandbox_add_addrinfo(const char *addr);
int tor_add_addrinfo(const char *addr);
// XXXX rename these. They are named as though they were sandbox-only,
// XXXX but in fact they're the only allowed entry point to getaddrinfo.
// XXXX They don't invoke the sandbox code; they only have an internal cache.
struct addrinfo;
/** Replacement for getaddrinfo(), using pre-recorded results. */
int sandbox_getaddrinfo(const char *name, const char *servname,
int tor_getaddrinfo(const char *name, const char *servname,
const struct addrinfo *hints,
struct addrinfo **res);
void sandbox_freeaddrinfo(struct addrinfo *addrinfo);
void sandbox_free_getaddrinfo_cache(void);
void sandbox_make_getaddrinfo_cache_active(void);
void tor_freeaddrinfo(struct addrinfo *addrinfo);
void tor_free_getaddrinfo_cache(void);
void tor_make_getaddrinfo_cache_active(void);
#else /* !(defined(USE_SANDBOX_GETADDRINFO)) */
#define sandbox_getaddrinfo(name, servname, hints, res) \
#define tor_getaddrinfo(name, servname, hints, res) \
getaddrinfo((name),(servname), (hints),(res))
#define sandbox_add_addrinfo(name) \
#define tor_add_addrinfo(name) \
((void)(name))
#define sandbox_freeaddrinfo(addrinfo) \
#define tor_freeaddrinfo(addrinfo) \
freeaddrinfo((addrinfo))
#define sandbox_free_getaddrinfo_cache()
#define tor_free_getaddrinfo_cache()
#endif /* defined(USE_SANDBOX_GETADDRINFO) */
void sandbox_disable_getaddrinfo_cache(void);

View File

@ -1552,7 +1552,7 @@ install_syscall_filter(sandbox_cfg_t* cfg)
// marking the sandbox as active
sandbox_active = 1;
sandbox_make_getaddrinfo_cache_active();
tor_make_getaddrinfo_cache_active();
end:
seccomp_release(ctx);