Loading changes/bug5082 0 → 100644 +6 −0 Changes for changes/bug5082: 6 added lines, 0 removed lines. Original line number Diff line number Diff line o Major bugfixes: - Properly set up obfsproxy's environment in managed mode. On TBB, we need LD_LIBRARY_PATH to be copied, and when you run your Tor as a daemon, there's no HOME. Fixes bug 5082 and 5076; bugfix on 0.2.3.6-alpha. src/or/transports.c +21 −25 Changes for src/or/transports.c: 21 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ static void set_managed_proxy_environment(LPVOID *envp, const managed_proxy_t *mp); #else static int set_managed_proxy_environment(char ***envp, static void set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp); #endif Loading Loading @@ -129,8 +129,8 @@ static INLINE void free_execve_args(char **arg); #define SMALLEST_MANAGED_LINE_SIZE 9 /** Number of environment variables for managed proxy clients/servers. */ #define ENVIRON_SIZE_CLIENT 5 #define ENVIRON_SIZE_SERVER 8 #define ENVIRON_SIZE_CLIENT 3 #define ENVIRON_SIZE_SERVER 6 /** The first and only supported - at the moment - configuration protocol version. */ Loading Loading @@ -305,12 +305,8 @@ launch_managed_proxy(managed_proxy_t *mp) char **envp=NULL; /* prepare the environment variables for the managed proxy */ if (set_managed_proxy_environment(&envp, mp) < 0) { log_warn(LD_GENERAL, "Could not setup the environment of " "the managed proxy at '%s'.", mp->argv[0]); free_execve_args(envp); return -1; } set_managed_proxy_environment(&envp, mp); tor_assert(envp); retval = tor_spawn_background(mp->argv[0], (const char **)mp->argv, (const char **)envp, &mp->process_handle); Loading Loading @@ -1077,10 +1073,12 @@ set_managed_proxy_environment(LPVOID *envp, const managed_proxy_t *mp) #else /* _WIN32 */ extern char **environ; /** Prepare the environment <b>envp</b> of managed proxy <b>mp</b>. * <b>envp</b> is allocated on the heap and should be freed by the * caller after its use. */ static int static void set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp) { const or_options_t *options = get_options(); Loading @@ -1088,27 +1086,30 @@ set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp) char *state_loc=NULL; char *transports_to_launch=NULL; char *bindaddr=NULL; char *home_env=NULL; char *path_env=NULL; int environ_size=0; char **environ_tmp = environ; int r = -1; int n_envs = mp->is_server ? ENVIRON_SIZE_SERVER : ENVIRON_SIZE_CLIENT; while (*environ_tmp) { environ_size++; environ_tmp++; } environ_tmp = environ; /* allocate enough space for our env. vars and a NULL pointer */ *envp = tor_malloc(sizeof(char*)*(n_envs+1)); *envp = tor_malloc(sizeof(char*)*(environ_size+n_envs+1)); tmp = *envp; state_loc = get_datadir_fname("pt_state/"); /* XXX temp */ transports_to_launch = smartlist_join_strings(mp->transports_to_launch, ",", 0, NULL); home_env = getenv("HOME"); path_env = getenv("PATH"); if (!home_env || !path_env) goto done; while (*environ_tmp) { *tmp = tor_strdup(*environ_tmp); tmp++, environ_tmp++; } tor_asprintf(tmp++, "HOME=%s", home_env); tor_asprintf(tmp++, "PATH=%s", path_env); tor_asprintf(tmp++, "TOR_PT_STATE_LOCATION=%s", state_loc); tor_asprintf(tmp++, "TOR_PT_MANAGED_TRANSPORT_VER=1"); /* temp */ if (mp->is_server) { Loading @@ -1124,14 +1125,9 @@ set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp) } *tmp = NULL; r = 0; done: tor_free(state_loc); tor_free(transports_to_launch); tor_free(bindaddr); return r; } #endif /* _WIN32 */ Loading Loading
changes/bug5082 0 → 100644 +6 −0 Changes for changes/bug5082: 6 added lines, 0 removed lines. Original line number Diff line number Diff line o Major bugfixes: - Properly set up obfsproxy's environment in managed mode. On TBB, we need LD_LIBRARY_PATH to be copied, and when you run your Tor as a daemon, there's no HOME. Fixes bug 5082 and 5076; bugfix on 0.2.3.6-alpha.
src/or/transports.c +21 −25 Changes for src/or/transports.c: 21 added lines, 25 removed lines. Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ static void set_managed_proxy_environment(LPVOID *envp, const managed_proxy_t *mp); #else static int set_managed_proxy_environment(char ***envp, static void set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp); #endif Loading Loading @@ -129,8 +129,8 @@ static INLINE void free_execve_args(char **arg); #define SMALLEST_MANAGED_LINE_SIZE 9 /** Number of environment variables for managed proxy clients/servers. */ #define ENVIRON_SIZE_CLIENT 5 #define ENVIRON_SIZE_SERVER 8 #define ENVIRON_SIZE_CLIENT 3 #define ENVIRON_SIZE_SERVER 6 /** The first and only supported - at the moment - configuration protocol version. */ Loading Loading @@ -305,12 +305,8 @@ launch_managed_proxy(managed_proxy_t *mp) char **envp=NULL; /* prepare the environment variables for the managed proxy */ if (set_managed_proxy_environment(&envp, mp) < 0) { log_warn(LD_GENERAL, "Could not setup the environment of " "the managed proxy at '%s'.", mp->argv[0]); free_execve_args(envp); return -1; } set_managed_proxy_environment(&envp, mp); tor_assert(envp); retval = tor_spawn_background(mp->argv[0], (const char **)mp->argv, (const char **)envp, &mp->process_handle); Loading Loading @@ -1077,10 +1073,12 @@ set_managed_proxy_environment(LPVOID *envp, const managed_proxy_t *mp) #else /* _WIN32 */ extern char **environ; /** Prepare the environment <b>envp</b> of managed proxy <b>mp</b>. * <b>envp</b> is allocated on the heap and should be freed by the * caller after its use. */ static int static void set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp) { const or_options_t *options = get_options(); Loading @@ -1088,27 +1086,30 @@ set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp) char *state_loc=NULL; char *transports_to_launch=NULL; char *bindaddr=NULL; char *home_env=NULL; char *path_env=NULL; int environ_size=0; char **environ_tmp = environ; int r = -1; int n_envs = mp->is_server ? ENVIRON_SIZE_SERVER : ENVIRON_SIZE_CLIENT; while (*environ_tmp) { environ_size++; environ_tmp++; } environ_tmp = environ; /* allocate enough space for our env. vars and a NULL pointer */ *envp = tor_malloc(sizeof(char*)*(n_envs+1)); *envp = tor_malloc(sizeof(char*)*(environ_size+n_envs+1)); tmp = *envp; state_loc = get_datadir_fname("pt_state/"); /* XXX temp */ transports_to_launch = smartlist_join_strings(mp->transports_to_launch, ",", 0, NULL); home_env = getenv("HOME"); path_env = getenv("PATH"); if (!home_env || !path_env) goto done; while (*environ_tmp) { *tmp = tor_strdup(*environ_tmp); tmp++, environ_tmp++; } tor_asprintf(tmp++, "HOME=%s", home_env); tor_asprintf(tmp++, "PATH=%s", path_env); tor_asprintf(tmp++, "TOR_PT_STATE_LOCATION=%s", state_loc); tor_asprintf(tmp++, "TOR_PT_MANAGED_TRANSPORT_VER=1"); /* temp */ if (mp->is_server) { Loading @@ -1124,14 +1125,9 @@ set_managed_proxy_environment(char ***envp, const managed_proxy_t *mp) } *tmp = NULL; r = 0; done: tor_free(state_loc); tor_free(transports_to_launch); tor_free(bindaddr); return r; } #endif /* _WIN32 */ Loading