Loading...
--- Libc/Libc-1725.40.4/string/FreeBSD/strcpy.3
+++ Libc/Libc-825.26/string/FreeBSD/strcpy.3
@@ -13,7 +13,7 @@
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
+.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)strcpy.3 8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
+.\" $FreeBSD: src/lib/libc/string/strcpy.3,v 1.28 2009/04/07 13:42:53 trasz Exp $
.\"
.Dd February 28, 2009
.Dt STRCPY 3
@@ -43,23 +43,27 @@
.Sh SYNOPSIS
.In string.h
.Ft char *
-.Fn stpcpy "char * dst" "const char * src"
-.Ft char *
-.Fn stpncpy "char * dst" "const char * src" "size_t len"
-.Ft char *
-.Fn strcpy "char * dst" "const char * src"
-.Ft char *
-.Fn strncpy "char * dst" "const char * src" "size_t len"
-.Sh ADMONISHMENT
-.Pp
-.ti +8
-.Pp
-YOU SHOULD ALMOST CERTAINLY USE
-.Fn strlcpy
-INSTEAD.
-.ti +8
-.Pp
-See "Examples" below.
+.Fo stpcpy
+.Fa "char *s1"
+.Fa "const char *s2"
+.Fc
+.Ft char *
+.Fo stpncpy
+.Fa "char *restrict s1"
+.Fa "const char *restrict s2"
+.Fa "size_t n"
+.Fc
+.Ft char *
+.Fo strcpy
+.Fa "char *restrict s1"
+.Fa "const char *restrict s2"
+.Fc
+.Ft char *
+.Fo strncpy
+.Fa "char *restrict s1"
+.Fa "const char *restrict s2"
+.Fa "size_t n"
+.Fc
.Sh DESCRIPTION
The
.Fn stpcpy
@@ -67,35 +71,35 @@
.Fn strcpy
functions
copy the string
-.Fa src
-to
-.Fa dst
+.Fa s2
+to
+.Fa s1
(including the terminating
.Ql \e0
-character.)
+character).
.Pp
The
.Fn stpncpy
and
.Fn strncpy
functions copy at most
-.Fa len
+.Fa n
characters from
-.Fa src
+.Fa s2
into
-.Fa dst .
+.Fa s1 .
If
-.Fa src
+.Fa s2
is less than
-.Fa len
+.Fa n
characters long,
the remainder of
-.Fa dst
+.Fa s1
is filled with
.Ql \e0
characters.
Otherwise,
-.Fa dst
+.Fa s1
is
.Em not
terminated.
@@ -109,7 +113,7 @@
.Fn strncpy
functions
return
-.Fa dst .
+.Fa s1 .
The
.Fn stpcpy
and
@@ -117,15 +121,15 @@
functions return a pointer to the terminating
.Ql \e0
character of
-.Fa dst .
+.Fa s1 .
If
.Fn stpncpy
does not terminate
-.Fa dst
+.Fa s1
with a
.Dv NUL
character, it instead returns a pointer to
-.Li dst[n]
+.Li s1[n]
(which does not necessarily refer to a valid memory location.)
.Sh EXAMPLES
The following sets
@@ -152,7 +156,7 @@
.Em not
.Tn NUL
terminate
-.Va chararray
+.Va chararray ,
because the length of the source string is greater than or equal
to the length argument.
.Pp
@@ -182,11 +186,26 @@
as shown in the following example:
.Pp
.Dl "(void)strlcpy(buf, input, sizeof(buf));"
-.Pp
-Note that because
+.Sh SECURITY CONSIDERATIONS
+The
+.Fn strcpy ,
+.Fn strncpy ,
+.Fn stpcpy ,
+and
+.Fn stpncpy
+functions are easily misused in a manner which enables malicious users
+to arbitrarily change a running program's functionality through a
+buffer overflow attack.
+(See
+the FSA
+and
+.Sx EXAMPLES . )
+.Pp
+It is recommended that
.Xr strlcpy 3
-is not defined in any standards, it should
-only be used when portability is not a concern.
+be used instead as a way to avoid such problems.
+.Xr strlcpy 3
+is not defined in any standards, but it has been adopted by most major libc implementations.
.Sh SEE ALSO
.Xr bcopy 3 ,
.Xr memccpy 3 ,
@@ -217,9 +236,3 @@
.Fn stpncpy
was added in
.Fx 8.0 .
-.Sh SECURITY CONSIDERATIONS
-The
-.Fn strcpy
-function is easily misused in a manner which enables malicious users
-to arbitrarily change a running program's functionality through a
-buffer overflow attack.