Make safe_strncat() conform to strlcpy() usage by returning the length of
authorBen Kibbey <bjk@luxsci.net>
Sun, 16 Jan 2011 00:03:03 +0000 (15 19:03 -0500)
committerBen Kibbey <bjk@luxsci.net>
Sun, 16 Jan 2011 00:03:03 +0000 (15 19:03 -0500)
the destination and source strings.

src/safe_strncat.c

index 92173f7..8584e08 100644 (file)
 #include <config.h>
 #endif
 
+#include <string.h>
 #include <stdio.h>
 
-char *safe_strncat(char *dst, const char *src, size_t n)
+size_t safe_strncat(char *dst, const char *src, size_t n)
 {
     char *dp;
     const char *sp;
     size_t len;
 
     if (!n)
-       return dst;
+       return strlen(dst)+strlen(src)+1;
 
     for (dp = dst, len = 0; *dp; dp++, len++);
 
@@ -36,5 +37,11 @@ char *safe_strncat(char *dst, const char *src, size_t n)
        *dp++ = *sp;
 
     *dp = 0;
-    return dst;
+
+    if (*sp) {
+       while (*sp++)
+           len++;
+    }
+
+    return len;
 }