pull/257/merge
crass 2021-01-24 21:41:19 -08:00 committed by GitHub
commit 93f92c8157
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 3 deletions

View File

@ -1,4 +1,5 @@
#include "common.h" #include "common.h"
#include "debug.h"
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <stdio.h> #include <stdio.h>
@ -128,5 +129,11 @@ char *get_config_path(char* default_path, char* pbuf, size_t bufsize) {
return NULL; return NULL;
have: have:
if(path[0] != '/') {
path = realpath(path, NULL);
setenv(PROXYCHAINS_CONF_FILE_ENV_VAR, path, 1);
free(path);
path = getenv(PROXYCHAINS_CONF_FILE_ENV_VAR);
}
return path; return path;
} }

View File

@ -5,7 +5,7 @@
#ifdef DEBUG #ifdef DEBUG
# define PSTDERR(fmt, args...) do { dprintf(2,fmt, ## args); } while(0) # define PSTDERR(fmt, args...) do { dprintf(2,fmt, ## args); } while(0)
# define PDEBUG(fmt, args...) PSTDERR("DEBUG:"fmt, ## args) # define PDEBUG(fmt, args...) PSTDERR("DEBUG:pid[%d]:"fmt, getpid(), ## args)
# define DEBUGDECL(args...) args # define DEBUGDECL(args...) args
# define DUMP_PROXY_CHAIN(A, B) dump_proxy_chain(A, B) # define DUMP_PROXY_CHAIN(A, B) dump_proxy_chain(A, B)
#else #else

View File

@ -135,6 +135,14 @@ int main(int argc, char *argv[]) {
if(!quiet) if(!quiet)
fprintf(stderr, LOG_PREFIX "preloading %s/%s\n", prefix, dll_name); fprintf(stderr, LOG_PREFIX "preloading %s/%s\n", prefix, dll_name);
snprintf(path=pbuf, sizeof(pbuf), "%s/%s", prefix, dll_name);
if (path[0] != '/'){
path = realpath(path, NULL);
snprintf(pbuf, sizeof(pbuf), "%s", path);
free(path);
path = pbuf;
}
#ifdef IS_MAC #ifdef IS_MAC
putenv("DYLD_FORCE_FLAT_NAMESPACE=1"); putenv("DYLD_FORCE_FLAT_NAMESPACE=1");
#define LD_PRELOAD_ENV "DYLD_INSERT_LIBRARIES" #define LD_PRELOAD_ENV "DYLD_INSERT_LIBRARIES"
@ -147,8 +155,8 @@ int main(int argc, char *argv[]) {
#define LD_PRELOAD_SEP " " #define LD_PRELOAD_SEP " "
#endif #endif
char *old_val = getenv(LD_PRELOAD_ENV); char *old_val = getenv(LD_PRELOAD_ENV);
snprintf(buf, sizeof(buf), LD_PRELOAD_ENV "=%s/%s%s%s", snprintf(buf, sizeof(buf), LD_PRELOAD_ENV "=%s%s%s",
prefix, dll_name, path,
/* append previous LD_PRELOAD content, if existent */ /* append previous LD_PRELOAD content, if existent */
old_val ? LD_PRELOAD_SEP : "", old_val ? LD_PRELOAD_SEP : "",
old_val ? old_val : ""); old_val ? old_val : "");