]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/commitdiff
Fix unterminated readlink() buffer usage
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Thu, 13 Oct 2011 08:30:21 +0000 (10:30 +0200)
committerStephen Hemminger <shemminger@vyatta.com>
Thu, 13 Oct 2011 15:16:56 +0000 (08:16 -0700)
Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
misc/ss.c

index b00841bcd1fbc9cf4734f816eb06b55d60cf0c90..135362074e557985029cb39e94dcdd2c6e6ceb37 100644 (file)
--- a/misc/ss.c
+++ b/misc/ss.c
@@ -273,13 +273,19 @@ static void user_ent_hash_build(void)
                        unsigned int ino;
                        char lnk[64];
                        int fd;
+                       ssize_t link_len;
 
                        if (sscanf(d1->d_name, "%d%c", &fd, &crap) != 1)
                                continue;
 
                        sprintf(name+pos, "%d", fd);
-                       if (readlink(name, lnk, sizeof(lnk)-1) < 0 ||
-                           strncmp(lnk, pattern, strlen(pattern)))
+
+                       link_len = readlink(name, lnk, sizeof(lnk)-1);
+                       if (link_len == -1)
+                               continue;
+                       lnk[link_len] = '\0';
+
+                       if (strncmp(lnk, pattern, strlen(pattern)))
                                continue;
 
                        sscanf(lnk, "socket:[%u]", &ino);