Don't check for NULL-pointers before calling free().
[tinc] / src / uml_device.c
index 3f52104..a675b62 100644 (file)
@@ -36,7 +36,7 @@ static int request_fd = -1;
 static int data_fd = -1;
 static int write_fd = -1;
 static int state = 0;
-static char *device_info;
+static const char *device_info = "UML network socket";
 
 enum request_type { REQ_NEW_CONTROL };
 
@@ -65,8 +65,6 @@ static bool setup_device(void) {
 
        get_config_string(lookup_config(config_tree, "Interface"), &iface);
 
-       device_info = "UML network socket";
-
        if((write_fd = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Could not open write %s: %s", device_info, strerror(errno));
                event_exit();
@@ -135,6 +133,7 @@ static bool setup_device(void) {
 
        listen_sun.sun_family = AF_UNIX;
        strncpy(listen_sun.sun_path, device, sizeof(listen_sun.sun_path));
+       listen_sun.sun_path[sizeof(listen_sun.sun_path) - 1] = 0;
 
        if(bind(listen_fd, (struct sockaddr *)&listen_sun, sizeof(listen_sun)) < 0) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Could not bind %s to %s: %s", device_info, device, strerror(errno));
@@ -184,10 +183,8 @@ void close_device(void) {
        free(device);
        device = NULL;
 
-       if(iface) {
-               free(iface);
-               iface = NULL;
-       }
+       free(iface);
+       iface = NULL;
 
        device_info = NULL;
 }
@@ -240,7 +237,7 @@ static bool read_packet(vpn_packet_t *packet) {
                        return false;
                }
 
-               if(connect(write_fd, (struct sockkadr *)&request.sock, sizeof(request.sock)) < 0) {
+               if(connect(write_fd, (const struct sockaddr *)&request.sock, sizeof(request.sock)) < 0) {
                        logger(DEBUG_ALWAYS, LOG_ERR, "Could not bind write %s: %s", device_info, strerror(errno));
                        event_exit();
                        return false;