Upgrade liblzma and xz(1). 1/2
[dragonfly.git] / lib / libc / string / memset.3
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. Neither the name of the University nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\"     @(#)memset.3    8.1 (Berkeley) 6/4/93
33 .\" $FreeBSD: head/lib/libc/string/memset.3 338051 2018-08-19 14:39:57Z kib $
34 .\"
35 .Dd September 14, 2019
36 .Dt MEMSET 3
37 .Os
38 .Sh NAME
39 .Nm memset ,
40 .Nm memset_s
41 .Nd write a byte to byte string
42 .Sh LIBRARY
43 .Lb libc
44 .Sh SYNOPSIS
45 .In string.h
46 .Ft void *
47 .Fn memset "void *dest" "int c" "size_t len"
48 .Ft errno_t
49 .Fn memset_s "void *dest" "rsize_t destsz" "int c" "rsize_t len"
50 .Sh DESCRIPTION
51 The
52 .Fn memset
53 function
54 writes
55 .Fa len
56 bytes of value
57 .Fa c
58 (converted to an
59 .Vt "unsigned char" )
60 to the string
61 .Fa dest .
62 Undefined behaviour from
63 .Fn memset ,
64 resulting from storage overflow, will occur if
65 .Fa len
66 is greater than the the length of buffer
67 .Fa dest .
68 The behaviour is also undefined if
69 .Fa dest
70 is an invalid pointer.
71 .Pp
72 The
73 .Fn memset_s
74 function behaves the same as
75 .Fn memset
76 except that an error is returned and the currently registered
77 runtime-constraint handler is called if
78 .Fa dest
79 is a null pointer,
80 .Fa destsz
81 or
82 .Fa len
83 is greater than
84 .Dv RSIZE_MAX ,
85 or
86 .Fa len
87 is greater than
88 .Fa destsz
89 (buffer overflow would occur).
90 The runtime-constraint handler is called first and may not return.
91 If it does return, an error is returned to the caller.
92 Like
93 .Xr explicit_bzero 3 ,
94 .Fn memset_s
95 is not removed through Dead Store Elimination (DSE), making it useful for
96 clearing sensitive data.
97 In contrast
98 .Fn memset
99 function
100 may be optimized away if the object modified by the function is not accessed
101 again.
102 To clear memory that will not subsequently be accessed it is advised to use
103 .Fn memset_s
104 instead of
105 .Fn memset .
106 For instance, a buffer containing a password should be cleared with
107 .Fn memset_s
108 before
109 .Xr free 3 .
110 .Sh RETURN VALUES
111 The
112 .Fn memset
113 function returns its first argument.
114 The
115 .Fn memset_s
116 function returns zero on success, non-zero on error.
117 .Sh SEE ALSO
118 .Xr bzero 3 ,
119 .Xr explicit_bzero 3 ,
120 .Xr set_constraint_handler_s 3 ,
121 .Xr swab 3 ,
122 .Xr wmemset 3
123 .Sh STANDARDS
124 The
125 .Fn memset
126 function
127 conforms to
128 .St -isoC .
129 .Fn memset_s
130 conforms to
131 .St -isoC-2011
132 K.3.7.4.1.