Better tun device name length handling.
authorBenjamin Cama <benoar@dolka.fr>
Tue, 16 Aug 2011 22:23:25 +0000 (00:23 +0200)
committerBenjamin Cama <benoar@dolka.fr>
Tue, 16 Aug 2011 22:23:25 +0000 (00:23 +0200)
Signed-off-by: Benjamin Cama <benoar@dolka.fr>
l2tpns.c
l2tpns.h

index 8224275..9f5e901 100644 (file)
--- a/l2tpns.c
+++ b/l2tpns.c
@@ -611,8 +611,8 @@ static void inittun(void)
                LOG(0, 0, 0, "Can't set tun interface: %s\n", strerror(errno));
                exit(1);
        }
                LOG(0, 0, 0, "Can't set tun interface: %s\n", strerror(errno));
                exit(1);
        }
-       assert(strlen(ifr.ifr_name) < sizeof(config->tundevice));
-       strncpy(config->tundevice, ifr.ifr_name, sizeof(config->tundevice) - 1);
+       assert(strlen(ifr.ifr_name) < sizeof(config->tundevice) - 1);
+       strncpy(config->tundevice, ifr.ifr_name, sizeof(config->tundevice));
 
        {
                // get the interface index
 
        {
                // get the interface index
index 26928d1..b9a0714 100644 (file)
--- a/l2tpns.h
+++ b/l2tpns.h
@@ -616,6 +616,10 @@ struct Tstats
 #define SET_STAT(x, y)
 #endif
 
 #define SET_STAT(x, y)
 #endif
 
+#ifndef IFNAMSIZ
+# define IFNAMSIZ 16
+#endif
+
 typedef struct
 {
        int             debug;                          // debugging level
 typedef struct
 {
        int             debug;                          // debugging level
@@ -631,7 +635,7 @@ typedef struct
        int             reload_config;                  // flag to re-read config (set by cli)
        int             multi_read_count;               // amount of packets to read per fd in processing loop
 
        int             reload_config;                  // flag to re-read config (set by cli)
        int             multi_read_count;               // amount of packets to read per fd in processing loop
 
-       char            tundevice[10];                  // tun device name
+       char            tundevice[IFNAMSIZ];            // tun device name
        char            log_filename[128];
 
        char            l2tp_secret[64];                // L2TP shared secret
        char            log_filename[128];
 
        char            l2tp_secret[64];                // L2TP shared secret