--- strcat.3.orig 2008-02-29 10:45:51.000000000 -0800 +++ strcat.3 2008-02-29 12:07:09.000000000 -0800 @@ -40,16 +40,24 @@ .Dt STRCAT 3 .Os .Sh NAME -.Nm strcat +.Nm strcat , +.Nm strncat .Nd concatenate strings .Sh LIBRARY .Lb libc .Sh SYNOPSIS .In string.h .Ft char * -.Fn strcat "char * restrict s" "const char * restrict append" +.Fo strcat +.Fa "char *restrict s1" +.Fa "const char *restrict s2" +.Fc .Ft char * -.Fn strncat "char * restrict s" "const char * restrict append" "size_t count" +.Fo strncat +.Fa "char *restrict s1" +.Fa "const char *restrict s2" +.Fa "size_t n" +.Fc .Sh DESCRIPTION The .Fn strcat @@ -57,24 +65,27 @@ .Fn strncat functions append a copy of the null-terminated string -.Fa append +.Fa s2 to the end of the null-terminated string -.Fa s , +.Fa s1 , then add a terminating .Ql \e0 . The string -.Fa s +.Fa s1 must have sufficient space to hold the result. .Pp The .Fn strncat function appends not more than -.Fa count +.Fa n characters from -.Fa append , +.Fa s2 , and then adds a terminating .Ql \e0 . +.Pp +The source and destination strings should not overlap, as the +behavior is undefined. .Sh RETURN VALUES The .Fn strcat @@ -82,7 +93,7 @@ .Fn strncat functions return the pointer -.Fa s . +.Fa s1 . .Sh SECURITY CONSIDERATIONS The .Fn strcat @@ -114,7 +125,7 @@ void foo(const char *arbitrary_string) { - char onstack[8]; + char onstack[8] = ""; #if defined(BAD) /* @@ -149,11 +160,6 @@ .Xr strcpy 3 , .Xr strlcat 3 , .Xr strlcpy 3 -.Rs -.%T "The FreeBSD Security Architecture" -.Re -(See -.Pa "/usr/share/doc/{to be decided}" . ) .Sh STANDARDS The .Fn strcat