1.\" Copyright (c) 1990, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" This code is derived from software contributed to Berkeley by 5.\" Chris Torek and the American National Standards Committee X3, 6.\" on Information Processing Systems. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 3. All advertising materials mentioning features or use of this software 17.\" must display the following acknowledgement: 18.\" This product includes software developed by the University of 19.\" California, Berkeley and its contributors. 20.\" 4. Neither the name of the University nor the names of its contributors 21.\" may be used to endorse or promote products derived from this software 22.\" without specific prior written permission. 23.\" 24.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34.\" SUCH DAMAGE. 35.\" 36.\" @(#)strcpy.3 8.1 (Berkeley) 6/4/93 37.\" $FreeBSD$ 38.\" 39.Dd August 9, 2001 40.Dt STRCPY 3 41.Os 42.Sh NAME 43.Nm strcpy , strncpy 44.Nd copy strings 45.Sh LIBRARY 46.Lb libc 47.Sh SYNOPSIS 48.In string.h 49.Ft char * 50.Fn strcpy "char * restrict dst" "const char * restrict src" 51.Ft char * 52.Fn strncpy "char * restrict dst" "const char * restrict src" "size_t len" 53.Sh DESCRIPTION 54The 55.Fn strcpy 56function 57copies the string 58.Fa src 59to 60.Fa dst 61(including the terminating 62.Ql \e0 63character). 64.Pp 65The 66.Fn strncpy 67function copies not more than 68.Fa len 69characters from 70.Fa src 71into 72.Fa dst , 73appending 74.Ql \e0 75characters if 76.Fa src 77is less than 78.Fa len 79characters long, and 80.Em not 81terminating 82.Fa dst 83otherwise. 84.Sh RETURN VALUES 85The 86.Fn strcpy 87and 88.Fn strncpy 89functions 90return 91.Fa dst . 92.Sh EXAMPLES 93The following sets 94.Va chararray 95to 96.Dq Li abc\e0\e0\e0 : 97.Bd -literal -offset indent 98char chararray[6]; 99 100(void)strncpy(chararray, "abc", sizeof(chararray)); 101.Ed 102.Pp 103The following sets 104.Va chararray 105to 106.Dq Li abcdef : 107.Bd -literal -offset indent 108char chararray[6]; 109 110(void)strncpy(chararray, "abcdefgh", sizeof(chararray)); 111.Ed 112.Pp 113Note that it does 114.Em not 115.Tn NUL 116terminate 117.Va chararray 118because the length of the source string is greater than or equal 119to the length parameter. 120.Pp 121The following copies as many characters from 122.Va input 123to 124.Va buf 125as will fit and 126.Tn NUL 127terminates the result. 128Because 129.Fn strncpy 130does 131.Em not 132guarantee to 133.Tn NUL 134terminate the string itself, this must be done explicitly. 135.Bd -literal -offset indent 136char buf[1024]; 137 138(void)strncpy(buf, input, sizeof(buf) - 1); 139buf[sizeof(buf) - 1] = '\e0'; 140.Ed 141.Pp 142This could be better achieved using 143.Xr strlcpy 3 , 144as shown in the following example: 145.Pp 146.Dl "(void)strlcpy(buf, input, sizeof(buf));" 147.Pp 148Note that because 149.Xr strlcpy 3 150is not defined in any standards, it should 151only be used when portability is not a concern. 152.Sh SECURITY CONSIDERATIONS 153The 154.Fn strcpy 155function is easily misused in a manner which enables malicious users 156to arbitrarily change a running program's functionality through a 157buffer overflow attack. 158(See 159the FSA 160and 161.Sx EXAMPLES . ) 162.Sh SEE ALSO 163.Xr bcopy 3 , 164.Xr memccpy 3 , 165.Xr memcpy 3 , 166.Xr memmove 3 , 167.Xr strlcpy 3 168.Rs 169.%T "The FreeBSD Security Architecture" 170.Re 171(See 172.Pa "/usr/share/doc/{to be decided}" . ) 173.Sh STANDARDS 174The 175.Fn strcpy 176and 177.Fn strncpy 178functions 179conform to 180.St -isoC . 181