mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-14 07:03:44 +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();
|
routerparse_free_all();
|
||||||
ext_orport_free_all();
|
ext_orport_free_all();
|
||||||
control_free_all();
|
control_free_all();
|
||||||
sandbox_free_getaddrinfo_cache();
|
tor_free_getaddrinfo_cache();
|
||||||
protover_free_all();
|
protover_free_all();
|
||||||
bridges_free_all();
|
bridges_free_all();
|
||||||
consdiffmgr_free_all();
|
consdiffmgr_free_all();
|
||||||
@ -3899,7 +3899,7 @@ init_addrinfo(void)
|
|||||||
|
|
||||||
// host name to sandbox
|
// host name to sandbox
|
||||||
gethostname(hname, sizeof(hname));
|
gethostname(hname, sizeof(hname));
|
||||||
sandbox_add_addrinfo(hname);
|
tor_add_addrinfo(hname);
|
||||||
}
|
}
|
||||||
|
|
||||||
static sandbox_cfg_t*
|
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));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_family = family;
|
hints.ai_family = family;
|
||||||
hints.ai_socktype = SOCK_STREAM;
|
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
|
/* The check for 'res' here shouldn't be necessary, but it makes static
|
||||||
* analysis tools happy. */
|
* analysis tools happy. */
|
||||||
if (!err && res) {
|
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);
|
&((struct sockaddr_in6*)best->ai_addr)->sin6_addr);
|
||||||
result = 0;
|
result = 0;
|
||||||
}
|
}
|
||||||
sandbox_freeaddrinfo(res);
|
tor_freeaddrinfo(res);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return (err == EAI_AGAIN) ? 1 : -1;
|
return (err == EAI_AGAIN) ? 1 : -1;
|
||||||
|
@ -121,14 +121,14 @@ sandbox_disable_getaddrinfo_cache(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sandbox_freeaddrinfo(struct addrinfo *ai)
|
tor_freeaddrinfo(struct addrinfo *ai)
|
||||||
{
|
{
|
||||||
if (sandbox_getaddrinfo_cache_disabled)
|
if (sandbox_getaddrinfo_cache_disabled)
|
||||||
freeaddrinfo(ai);
|
freeaddrinfo(ai);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sandbox_getaddrinfo(const char *name, const char *servname,
|
tor_getaddrinfo(const char *name, const char *servname,
|
||||||
const struct addrinfo *hints,
|
const struct addrinfo *hints,
|
||||||
struct addrinfo **res)
|
struct addrinfo **res)
|
||||||
{
|
{
|
||||||
@ -191,7 +191,7 @@ sandbox_getaddrinfo(const char *name, const char *servname,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sandbox_add_addrinfo(const char *name)
|
tor_add_addrinfo(const char *name)
|
||||||
{
|
{
|
||||||
struct addrinfo *res;
|
struct addrinfo *res;
|
||||||
struct addrinfo hints;
|
struct addrinfo hints;
|
||||||
@ -204,16 +204,16 @@ sandbox_add_addrinfo(const char *name)
|
|||||||
hints.ai_family = families[i];
|
hints.ai_family = families[i];
|
||||||
|
|
||||||
res = NULL;
|
res = NULL;
|
||||||
(void) sandbox_getaddrinfo(name, NULL, &hints, &res);
|
(void) tor_getaddrinfo(name, NULL, &hints, &res);
|
||||||
if (res)
|
if (res)
|
||||||
sandbox_freeaddrinfo(res);
|
tor_freeaddrinfo(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sandbox_free_getaddrinfo_cache(void)
|
tor_free_getaddrinfo_cache(void)
|
||||||
{
|
{
|
||||||
cached_getaddrinfo_item_t **next, **item, *this;
|
cached_getaddrinfo_item_t **next, **item, *this;
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ sandbox_free_getaddrinfo_cache(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sandbox_make_getaddrinfo_cache_active(void)
|
tor_make_getaddrinfo_cache_active(void)
|
||||||
{
|
{
|
||||||
sandbox_getaddrinfo_is_active = 1;
|
sandbox_getaddrinfo_is_active = 1;
|
||||||
}
|
}
|
||||||
|
@ -22,27 +22,24 @@ MOCK_DECL(int,tor_lookup_hostname,(const char *name, uint32_t *addr));
|
|||||||
struct addrinfo;
|
struct addrinfo;
|
||||||
#ifdef USE_SANDBOX_GETADDRINFO
|
#ifdef USE_SANDBOX_GETADDRINFO
|
||||||
/** Pre-calls getaddrinfo in order to pre-record result. */
|
/** 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;
|
struct addrinfo;
|
||||||
/** Replacement for getaddrinfo(), using pre-recorded results. */
|
/** 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,
|
const struct addrinfo *hints,
|
||||||
struct addrinfo **res);
|
struct addrinfo **res);
|
||||||
void sandbox_freeaddrinfo(struct addrinfo *addrinfo);
|
void tor_freeaddrinfo(struct addrinfo *addrinfo);
|
||||||
void sandbox_free_getaddrinfo_cache(void);
|
void tor_free_getaddrinfo_cache(void);
|
||||||
void sandbox_make_getaddrinfo_cache_active(void);
|
void tor_make_getaddrinfo_cache_active(void);
|
||||||
#else /* !(defined(USE_SANDBOX_GETADDRINFO)) */
|
#else /* !(defined(USE_SANDBOX_GETADDRINFO)) */
|
||||||
#define sandbox_getaddrinfo(name, servname, hints, res) \
|
#define tor_getaddrinfo(name, servname, hints, res) \
|
||||||
getaddrinfo((name),(servname), (hints),(res))
|
getaddrinfo((name),(servname), (hints),(res))
|
||||||
#define sandbox_add_addrinfo(name) \
|
#define tor_add_addrinfo(name) \
|
||||||
((void)(name))
|
((void)(name))
|
||||||
#define sandbox_freeaddrinfo(addrinfo) \
|
#define tor_freeaddrinfo(addrinfo) \
|
||||||
freeaddrinfo((addrinfo))
|
freeaddrinfo((addrinfo))
|
||||||
#define sandbox_free_getaddrinfo_cache()
|
#define tor_free_getaddrinfo_cache()
|
||||||
#endif /* defined(USE_SANDBOX_GETADDRINFO) */
|
#endif /* defined(USE_SANDBOX_GETADDRINFO) */
|
||||||
|
|
||||||
void sandbox_disable_getaddrinfo_cache(void);
|
void sandbox_disable_getaddrinfo_cache(void);
|
||||||
|
@ -1552,7 +1552,7 @@ install_syscall_filter(sandbox_cfg_t* cfg)
|
|||||||
|
|
||||||
// marking the sandbox as active
|
// marking the sandbox as active
|
||||||
sandbox_active = 1;
|
sandbox_active = 1;
|
||||||
sandbox_make_getaddrinfo_cache_active();
|
tor_make_getaddrinfo_cache_active();
|
||||||
|
|
||||||
end:
|
end:
|
||||||
seccomp_release(ctx);
|
seccomp_release(ctx);
|
||||||
|
Loading…
Reference in New Issue
Block a user