diff options
-rwxr-xr-x | src/configure | 2 | ||||
-rw-r--r-- | src/daemon.h | 2 | ||||
-rw-r--r-- | src/linux/tun.c | 6 | ||||
-rw-r--r-- | src/log.c | 3 | ||||
-rw-r--r-- | src/options.h | 1 | ||||
-rw-r--r-- | src/sig_handler.c | 2 | ||||
-rw-r--r-- | src/sysexec.c | 5 | ||||
-rw-r--r-- | src/uanytun.c | 4 | ||||
-rw-r--r-- | src/udp.c | 9 |
9 files changed, 23 insertions, 11 deletions
diff --git a/src/configure b/src/configure index 2f5cb5e..d91b396 100755 --- a/src/configure +++ b/src/configure @@ -38,7 +38,7 @@ TARGET=`uname -s` EBUILD_COMPAT=0 -CFLAGS='-g -O2' +CFLAGS='-g -Wall -O2' LDFLAGS='-g -Wall -O2' CRYPTO_LIB='gcrypt' diff --git a/src/daemon.h b/src/daemon.h index 0113fcd..9e6f1b2 100644 --- a/src/daemon.h +++ b/src/daemon.h @@ -122,6 +122,8 @@ int do_chroot(const char* chrootdir) log_printf(ERROR, "can't change to /: %s", strerror(errno)); return -1; } + + return 0; } void daemonize() diff --git a/src/linux/tun.c b/src/linux/tun.c index 85cdc01..43370f0 100644 --- a/src/linux/tun.c +++ b/src/linux/tun.c @@ -33,6 +33,7 @@ * along with uAnytun. If not, see <http://www.gnu.org/licenses/>. */ +#define _GNU_SOURCE #include <stdio.h> #include "datatypes.h" @@ -116,6 +117,7 @@ int tun_init(tun_device_t* dev, const char* dev_name, const char* dev_type, cons int tun_init_post(tun_device_t* dev) { // nothing yet + return 0; } void tun_close(tun_device_t* dev) @@ -192,8 +194,8 @@ void tun_do_ifconfig(tun_device_t* dev) return; char* mtu_str = NULL; - asprintf(&mtu_str, "%d", dev->mtu_); - if(!mtu_str) { + int len = asprintf(&mtu_str, "%d", dev->mtu_); + if(len == -1) { log_printf(ERROR, "Execution of ifconfig failed"); return; } @@ -35,6 +35,7 @@ #include "datatypes.h" +#include <ctype.h> #include <string.h> #include <stdarg.h> #include <stdlib.h> @@ -246,7 +247,7 @@ void log_print_hex_dump(log_prio_t prio, const u_int8_t* buf, u_int32_t len) int offset = snprintf(msg, MSG_LENGTH_MAX, "dump(%d): ", len); if(offset < 0) return; - u_int8_t* ptr = &msg[offset]; + char* ptr = &msg[offset]; for(i=0; i < len; i++) { if(((i+1)*3) >= (MSG_LENGTH_MAX - offset)) diff --git a/src/options.h b/src/options.h index ccc5044..66c9e99 100644 --- a/src/options.h +++ b/src/options.h @@ -92,6 +92,7 @@ void options_parse_post(options_t* opt); void options_default(options_t* opt); void options_clear(options_t* opt); void options_print_usage(); +void options_print_version(); void options_print(options_t* opt); #endif diff --git a/src/sig_handler.c b/src/sig_handler.c index 92b1d02..7c5c695 100644 --- a/src/sig_handler.c +++ b/src/sig_handler.c @@ -42,7 +42,7 @@ #include <unistd.h> #include <fcntl.h> #include <errno.h> - +#include <string.h> static int sig_pipe_fds[2]; diff --git a/src/sysexec.c b/src/sysexec.c index 1d3df91..708d8d0 100644 --- a/src/sysexec.c +++ b/src/sysexec.c @@ -35,6 +35,7 @@ #include "datatypes.h" +#include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> @@ -42,6 +43,7 @@ #include <sys/wait.h> #include <sys/select.h> #include <stdlib.h> +#include <stdio.h> #include <string.h> #include "sysexec.h" @@ -83,7 +85,8 @@ int uanytun_exec(const char* script, char* const argv[], char* const evp[]) // if execve returns, an error occurred, but logging doesn't work // because we closed all file descriptors, so just write errno to // pipe and call exit - write(pipefd[1], (void*)(&errno), sizeof(errno)); + int ret = write(pipefd[1], (void*)(&errno), sizeof(errno)); + if(ret == -1) exit(-1); exit(-1); } close(pipefd[1]); diff --git a/src/uanytun.c b/src/uanytun.c index be67d77..d804d05 100644 --- a/src/uanytun.c +++ b/src/uanytun.c @@ -236,7 +236,7 @@ int main_loop(tun_device_t* dev, udp_t* sock, options_t* opt) int return_value = 0; int sig_fd = signal_init(); if(sig_fd < 0) - return_value -1; + return_value = -1; FD_SET(sig_fd, &readfds); nfds = (nfds < sig_fd) ? sig_fd : nfds; @@ -372,7 +372,7 @@ int main(int argc, char* argv[]) log_printf(NOTICE, "executing post-up script '%s'", opt.post_up_script_); char* const argv[] = { opt.post_up_script_, dev.actual_name_, NULL }; char* const evp[] = { NULL }; - int ret = uanytun_exec(opt.post_up_script_, argv, evp); + uanytun_exec(opt.post_up_script_, argv, evp); } @@ -33,6 +33,9 @@ * along with uAnytun. If not, see <http://www.gnu.org/licenses/>. */ +#define _GNU_SOURCE +#include <stdio.h> + #include "datatypes.h" #include "udp.h" @@ -240,7 +243,6 @@ void udp_close(udp_t* sock) char* udp_endpoint_to_string(udp_endpoint_t e) { - size_t addrstr_len = 0; char addrstr[INET6_ADDRSTRLEN + 1], portstr[6], *ret; char addrport_sep = ':'; @@ -249,12 +251,13 @@ char* udp_endpoint_to_string(udp_endpoint_t e) case AF_INET: addrport_sep = ':'; break; case AF_INET6: addrport_sep = '.'; break; case AF_UNSPEC: return NULL; - default: asprintf(&ret, "unknown address type"); return ret; + default: return strdup("unknown address type"); } int errcode = getnameinfo((struct sockaddr *)&(e.addr_), e.len_, addrstr, sizeof(addrstr), portstr, sizeof(portstr), NI_NUMERICHOST | NI_NUMERICSERV); if (errcode != 0) return NULL; - asprintf(&ret, "%s%c%s", addrstr, addrport_sep ,portstr); + int len = asprintf(&ret, "%s%c%s", addrstr, addrport_sep ,portstr); + if(len == -1) return NULL; return ret; } |