mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Merge remote-tracking branch 'rl1987/bug26525'
This commit is contained in:
commit
03283c00d8
4
changes/bug26525
Normal file
4
changes/bug26525
Normal 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.
|
@ -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*
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user