networking: fix potential overflow in ife_print6()
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Mon, 12 Aug 2013 15:09:59 +0000 (17:09 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 14 Aug 2013 15:43:05 +0000 (17:43 +0200)
devname is used by fscanf to store a string specified by '%20s'.

Extract from the man for the '%s' specifier:
Matches a sequence of non-white-space characters; the next pointer must be a
pointer to character array that is long enough to hold the input sequence and
the terminating null byte ('\0'), which is added automatically. The input
string stops at white space or at the maximum field width, whichever occurs
first.

Hence, the right length is 20 + 1 for the '\0'.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/interface.c

index 3dc5b3640b2494d55d1a3e0719d92012b1b66746..bf7d2b1b44ab7b24fcb7c7fded97432081b20104 100644 (file)
@@ -874,7 +874,7 @@ static void print_bytes_scaled(unsigned long long ull, const char *end)
 static void ife_print6(struct interface *ptr)
 {
        FILE *f;
-       char addr6[40], devname[20];
+       char addr6[40], devname[21];
        struct sockaddr_in6 sap;
        int plen, scope, dad_status, if_idx;
        char addr6p[8][5];