cmd: Use strl* rather than strn* to avoid overrun
authorSimon Wilkinson <sxw@your-file-system.com>
Sat, 31 Mar 2012 10:58:01 +0000 (06:58 -0400)
committerDerrick Brashear <shadow@dementix.org>
Mon, 9 Apr 2012 01:18:48 +0000 (18:18 -0700)
The NName function was using strncat(a, b, sizeof(a)), which doesn't
work as you would expect if 'a' already contains data. To avoid the
potential buffer overflow, switch to just using strlcat.

Caught by clang-analyzer

Change-Id: Idd2c630c07a93b27e8d629339589aa6686290eae
Reviewed-on: http://gerrit.openafs.org/7092
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/cmd/cmd.c

index 90fa470..f5282a3 100644 (file)
@@ -42,9 +42,8 @@ NName(char *a1, char *a2)
     if (strlen(a1) == 0) {
         return "";
     } else {
-        strncpy(tbuffer, a1, sizeof(tbuffer));
-        strncat(tbuffer, a2, sizeof(tbuffer));
-        tbuffer[sizeof(tbuffer)-1]='\0';
+        strlcpy(tbuffer, a1, sizeof(tbuffer));
+        strlcat(tbuffer, a2, sizeof(tbuffer));
         return tbuffer;
     }
 }