mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Fix compilation on OSX
This commit is contained in:
parent
e9ec0cb550
commit
49f9c4924e
@ -235,7 +235,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, &hints, &res);
|
err = sandbox_getaddrinfo(name, NULL, &hints, &res);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
best = NULL;
|
best = NULL;
|
||||||
for (res_p = res; res_p; res_p = res_p->ai_next) {
|
for (res_p = res; res_p; res_p = res_p->ai_next) {
|
||||||
|
@ -26,10 +26,6 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "tor_queue.h"
|
#include "tor_queue.h"
|
||||||
|
|
||||||
#if defined(HAVE_SECCOMP_H) && defined(__linux__)
|
|
||||||
#define USE_LIBSECCOMP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DEBUGGING_CLOSE
|
#define DEBUGGING_CLOSE
|
||||||
|
|
||||||
#if defined(USE_LIBSECCOMP)
|
#if defined(USE_LIBSECCOMP)
|
||||||
@ -1083,11 +1079,15 @@ sandbox_cfg_allow_execve_array(sandbox_cfg_t **cfg, ...)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sandbox_getaddrinfo(const char *name, const struct addrinfo *hints,
|
sandbox_getaddrinfo(const char *name, const char *servname,
|
||||||
struct addrinfo **res)
|
const struct addrinfo *hints,
|
||||||
|
struct addrinfo **res)
|
||||||
{
|
{
|
||||||
sb_addr_info_t *el;
|
sb_addr_info_t *el;
|
||||||
|
|
||||||
|
if (servname != NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
*res = NULL;
|
*res = NULL;
|
||||||
|
|
||||||
for (el = sb_addr_info; el; el = el->next) {
|
for (el = sb_addr_info; el; el = el->next) {
|
||||||
@ -1386,21 +1386,24 @@ sandbox_cfg_new(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sandbox_init(sandbox_cfg_t* cfg)
|
sandbox_init(sandbox_cfg_t *cfg)
|
||||||
{
|
{
|
||||||
#if defined(USE_LIBSECCOMP)
|
#if defined(USE_LIBSECCOMP)
|
||||||
return initialise_libseccomp_sandbox(cfg);
|
return initialise_libseccomp_sandbox(cfg);
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
|
(void)cfg;
|
||||||
log_warn(LD_BUG,"Windows sandboxing is not implemented. The feature is "
|
log_warn(LD_BUG,"Windows sandboxing is not implemented. The feature is "
|
||||||
"currently disabled.");
|
"currently disabled.");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#elif defined(TARGET_OS_MAC)
|
#elif defined(TARGET_OS_MAC)
|
||||||
|
(void)cfg;
|
||||||
log_warn(LD_BUG,"Mac OSX sandboxing is not implemented. The feature is "
|
log_warn(LD_BUG,"Mac OSX sandboxing is not implemented. The feature is "
|
||||||
"currently disabled");
|
"currently disabled");
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
|
(void)cfg;
|
||||||
log_warn(LD_BUG,"Sandboxing is not implemented for your platform. The "
|
log_warn(LD_BUG,"Sandboxing is not implemented for your platform. The "
|
||||||
"feature is currently disabled");
|
"feature is currently disabled");
|
||||||
return 0;
|
return 0;
|
||||||
@ -1417,3 +1420,63 @@ sandbox_set_debugging_fd(int fd)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef USE_LIBSECCOMP
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_open_filename(sandbox_cfg_t **cfg, char *file,
|
||||||
|
int fr)
|
||||||
|
{
|
||||||
|
(void)cfg; (void)file; (void)fr;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_open_filename_array(sandbox_cfg_t **cfg, ...)
|
||||||
|
{
|
||||||
|
(void)cfg;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_openat_filename(sandbox_cfg_t **cfg, char *file,
|
||||||
|
int fr)
|
||||||
|
{
|
||||||
|
(void)cfg; (void)file; (void)fr;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_openat_filename_array(sandbox_cfg_t **cfg, ...)
|
||||||
|
{
|
||||||
|
(void)cfg;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_execve(sandbox_cfg_t **cfg, const char *com)
|
||||||
|
{
|
||||||
|
(void)cfg; (void)com;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_execve_array(sandbox_cfg_t **cfg, ...)
|
||||||
|
{
|
||||||
|
(void)cfg;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_stat_filename(sandbox_cfg_t **cfg, char *file,
|
||||||
|
int fr)
|
||||||
|
{
|
||||||
|
(void)cfg; (void)file; (void)fr;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
sandbox_cfg_allow_stat_filename_array(sandbox_cfg_t **cfg, ...)
|
||||||
|
{
|
||||||
|
(void)cfg;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -12,6 +12,9 @@
|
|||||||
#ifndef SANDBOX_H_
|
#ifndef SANDBOX_H_
|
||||||
#define SANDBOX_H_
|
#define SANDBOX_H_
|
||||||
|
|
||||||
|
#include "orconfig.h"
|
||||||
|
#include "torint.h"
|
||||||
|
|
||||||
#ifndef SYS_SECCOMP
|
#ifndef SYS_SECCOMP
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -22,12 +25,15 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "torint.h"
|
#if defined(HAVE_SECCOMP_H) && defined(__linux__)
|
||||||
|
#define USE_LIBSECCOMP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Linux definitions
|
* Linux definitions
|
||||||
*/
|
*/
|
||||||
#ifdef __linux__
|
#ifdef USE_LIBSECCOMP
|
||||||
|
|
||||||
#ifndef __USE_GNU
|
#ifndef __USE_GNU
|
||||||
#define __USE_GNU
|
#define __USE_GNU
|
||||||
@ -80,8 +86,6 @@ struct sandbox_cfg_elem {
|
|||||||
/** Next element of the configuration*/
|
/** Next element of the configuration*/
|
||||||
struct sandbox_cfg_elem *next;
|
struct sandbox_cfg_elem *next;
|
||||||
};
|
};
|
||||||
/** Typedef to structure used to manage a sandbox configuration. */
|
|
||||||
typedef struct sandbox_cfg_elem sandbox_cfg_t;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structure used for keeping a linked list of getaddrinfo pre-recorded
|
* Structure used for keeping a linked list of getaddrinfo pre-recorded
|
||||||
@ -127,22 +131,38 @@ typedef struct {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // __linux__
|
#endif // USE_LIBSECCOMP
|
||||||
|
|
||||||
|
/** Typedef to structure used to manage a sandbox configuration. */
|
||||||
|
typedef struct sandbox_cfg_elem sandbox_cfg_t;
|
||||||
|
|
||||||
|
#ifdef USE_LIBSECCOMP
|
||||||
/** 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 sandbox_add_addrinfo(const char *addr);
|
||||||
|
|
||||||
|
struct addrinfo;
|
||||||
/** Replacement for getaddrinfo(), using pre-recorded results. */
|
/** Replacement for getaddrinfo(), using pre-recorded results. */
|
||||||
int sandbox_getaddrinfo(const char *name, const struct addrinfo *hints,
|
int sandbox_getaddrinfo(const char *name, const char *servname,
|
||||||
struct addrinfo **res);
|
const struct addrinfo *hints,
|
||||||
|
struct addrinfo **res);
|
||||||
|
#else
|
||||||
|
#define sandbox_getaddrinfo(name, servname, hints, res) \
|
||||||
|
getaddrinfo((name),(servname), (hints),(res))
|
||||||
|
#define sandbox_add_addrinfo(name) \
|
||||||
|
((void)(name))
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Use <b>fd</b> to log non-survivable sandbox violations. */
|
/** Use <b>fd</b> to log non-survivable sandbox violations. */
|
||||||
void sandbox_set_debugging_fd(int fd);
|
void sandbox_set_debugging_fd(int fd);
|
||||||
|
|
||||||
|
#ifdef USE_LIBSECCOMP
|
||||||
/** Returns a registered protected string used with the sandbox, given that
|
/** Returns a registered protected string used with the sandbox, given that
|
||||||
* it matches the parameter.
|
* it matches the parameter.
|
||||||
*/
|
*/
|
||||||
const char* sandbox_intern_string(const char *param);
|
const char* sandbox_intern_string(const char *param);
|
||||||
|
#else
|
||||||
|
#define sandbox_intern_string(s) (s)
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Creates an empty sandbox configuration file.*/
|
/** Creates an empty sandbox configuration file.*/
|
||||||
sandbox_cfg_t * sandbox_cfg_new(void);
|
sandbox_cfg_t * sandbox_cfg_new(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user