From 1d4563ac3155f24e478b4b4512466d81ff9eef1e Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 23 Nov 2015 12:32:20 -0800 Subject: [PATCH] A few very tiny bits of dead code removal, etc. --- netcon/Intercept.c | 50 +++++++++-------------------- netcon/libzerotierintercept.so.1.0 | Bin 0 -> 65422 bytes 2 files changed, 15 insertions(+), 35 deletions(-) create mode 100755 netcon/libzerotierintercept.so.1.0 diff --git a/netcon/Intercept.c b/netcon/Intercept.c index 35a4c1c85..4c47fa5c6 100755 --- a/netcon/Intercept.c +++ b/netcon/Intercept.c @@ -29,9 +29,6 @@ #define _GNU_SOURCE #endif -/* Name used in err msgs */ -char *progname = ""; - #include #include #include @@ -63,9 +60,6 @@ char *progname = ""; #endif /* Global Declarations */ -#ifdef USE_SOCKS_DNS -static int (*realresinit)(void); -#endif static int (*realconnect)(CONNECT_SIG); static int (*realselect)(SELECT_SIG); static int (*realbind)(BIND_SIG); @@ -100,11 +94,6 @@ int clone(CLONE_SIG); int dup2(DUP2_SIG); int dup3(DUP3_SIG); - -#ifdef USE_SOCKS_DNS - int res_init(void); -#endif - int connect_to_service(void); int init_service_connection(); void load_symbols(void); @@ -117,8 +106,8 @@ int checkpid(); ssize_t sock_fd_read(int sock, void *buf, ssize_t bufsize, int *fd); /* threading */ -pthread_mutex_t lock; -pthread_mutex_t loglock; +static pthread_mutex_t lock; +static pthread_mutex_t loglock; void handle_error(char *name, char *info, int err) { @@ -172,7 +161,7 @@ int send_command(int rpc_fd, char *cmd) #define IDX_COUNT IDX_TID + sizeof(pid_t) #define IDX_TIME IDX_COUNT + sizeof(int) #define IDX_CMD IDX_TIME + 20 // 20 being the length of the timestamp string - #define IDX_PAYLOAD IDX_TIME + sizeof(char) + #define IDX_PAYLOAD IDX_TIME + sizeof(char) */ /* [pid_t] [pid_t] [rpc_count] [int] [...] */ memset(metabuf, '\0', BUF_SZ); @@ -188,7 +177,7 @@ int send_command(int rpc_fd, char *cmd) memcpy(&metabuf[IDX_COUNT], &rpc_count, sizeof(rpc_count) ); /* rpc_count */ memcpy(&metabuf[IDX_TIME], ×tring, 20 ); /* timestamp */ #endif - /* Combine command flag+payload with RPC metadata */ + /* Combine command flag+payload with RPC metadata */ memcpy(&metabuf[IDX_PAYLOAD], cmd, PAYLOAD_SZ); int n_write = write(rpc_fd, &metabuf, BUF_SZ); if(n_write < 0){ @@ -328,13 +317,8 @@ void load_symbols(void) realclone = dlsym(RTLD_NEXT, "clone"); realclose = dlsym(RTLD_NEXT, "close"); realsyscall = dlsym(RTLD_NEXT, "syscall"); - /* realsyscall = dlsym(RTLD_NEXT, "poll"); */ realdup2 = dlsym(RTLD_NEXT, "dup2"); realdup3 = dlsym(RTLD_NEXT, "dup3"); -#ifdef USE_SOCKS_DNS - realresinit = dlsym(RTLD_NEXT, "res_init"); -#endif - #else lib = dlopen(LIBCONNECT, RTLD_LAZY); realconnect = dlsym(lib, "connect"); @@ -349,12 +333,8 @@ void load_symbols(void) realclone = dlsym(lib, "clone"); realclose = dlsym(lib, "close"); realsyscall = dlsym(lib, "syscall"); - /* realsyscall = dlsym(lib, "poll"); */ realdup2 = dlsym(RTLD_NEXT, "dup2"); realdup3 = dlsym(RTLD_NEXT, "dup3"); -#ifdef USE_SOCKS_DNS - realresinit = dlsym(lib, "res_init"); -#endif dlclose(lib); lib = dlopen(LIBC, RTLD_LAZY); dlclose(lib); @@ -531,7 +511,7 @@ int socket(SOCKET_SIG) cmd[0] = RPC_MAP; memcpy(&cmd[1], &newfd, sizeof(newfd)); - if(newfd > -1) { + if(newfd > -1) { send_command(fdret_sock, cmd); pthread_mutex_unlock(&lock); errno = ERR_OK; /* OK */ @@ -825,10 +805,10 @@ int accept(ACCEPT_SIG) handle_error("accept", "Unresolved symbol [accept]", -1); return -1; } - + // if(opt & O_NONBLOCK) fcntl(sockfd, F_SETFL, O_NONBLOCK); /* required by libuv in nodejs */ - + char c[1]; int new_conn_socket; @@ -865,16 +845,16 @@ int accept(ACCEPT_SIG) return -1; } } - - errno = EAGAIN; /* necessary? */ + + errno = EAGAIN; /* necessary? */ handle_error("accept", "EAGAIN - Error reading signal byte from service", -1); return -EAGAIN; /* Prevents libuv in nodejs from accepting properly (it looks for a -EAGAIN) */ -/* +/* errno = EBADF; handle_error("accept", "EBADF - Error reading signal byte from service", -1); - return -1; + return -1; */ } @@ -1031,10 +1011,10 @@ int dup3(DUP3_SIG) } dwr(MSG_DEBUG,"dup3(%d, %d, %d)\n", oldfd, newfd, flags); #ifdef DEBUG - /* Only do this check if we want to debug the intercept, otherwise, dont mess with + /* Only do this check if we want to debug the intercept, otherwise, dont mess with the client application's logging methods */ if(newfd == STDIN_FILENO || newfd == STDOUT_FILENO || newfd == STDERR_FILENO) - return newfd; /* FIXME: This is to prevent httpd from dup'ing over our stderr + return newfd; /* FIXME: This is to prevent httpd from dup'ing over our stderr and preventing us from debugging */ else #endif @@ -1079,9 +1059,9 @@ long syscall(SYSCALL_SIG){ int flags = d; int old_errno = errno; int err = accept4(sockfd, addr, addrlen, flags); - + errno = old_errno; - if(err == -EBADF) + if(err == -EBADF) err = -EAGAIN; return err; } diff --git a/netcon/libzerotierintercept.so.1.0 b/netcon/libzerotierintercept.so.1.0 new file mode 100755 index 0000000000000000000000000000000000000000..3e72687525283b539634aceda37bd7857f2715ef GIT binary patch literal 65422 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 literal 0 HcmV?d00001