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.\" 34.Dd August 19, 2018 35.Dt MEMSET 3 36.Os 37.Sh NAME 38.Nm memset 39.Nd write a byte to byte string 40.Sh LIBRARY 41.Lb libc 42.Sh SYNOPSIS 43.In string.h 44.Ft void * 45.Fn memset "void *dest" "int c" "size_t len" 46.Fd #define __STDC_WANT_LIB_EXT1__ 1 47.Ft errno_t 48.Fn memset_s "void *dest" "rsize_t destsz" "int c" "rsize_t len" 49.Sh DESCRIPTION 50The 51.Fn memset 52function 53writes 54.Fa len 55bytes of value 56.Fa c 57(converted to an 58.Vt "unsigned char" ) 59to the string 60.Fa dest . 61Undefined behaviour from 62.Fn memset , 63resulting from storage overflow, will occur if 64.Fa len 65is greater than the length of the 66.Fa dest 67buffer. 68The behaviour is also undefined if 69.Fa dest 70is an invalid pointer. 71.Pp 72The 73.Fn memset_s 74function behaves the same as 75.Fn memset 76except that an error is returned and the currently registered 77runtime-constraint handler is called if 78.Fa dest 79is a null pointer, 80.Fa destsz 81or 82.Fa len 83is greater than 84.Dv RSIZE_MAX , 85or 86.Fa len 87is greater than 88.Fa destsz 89(buffer overflow would occur). 90The runtime-constraint handler is called first and may not return. 91If it does return, an error is returned to the caller. 92Like 93.Xr explicit_bzero 3 , 94.Fn memset_s 95is not removed through Dead Store Elimination (DSE), making it useful for 96clearing sensitive data. 97In contrast 98.Fn memset 99function 100may be optimized away if the object modified by the function is not accessed 101again. 102To clear memory that will not subsequently be accessed it is advised to use 103.Fn memset_s 104instead of 105.Fn memset . 106For instance, a buffer containing a password should be cleared with 107.Fn memset_s 108before 109.Xr free 3 . 110.Sh RETURN VALUES 111The 112.Fn memset 113function returns its first argument. 114The 115.Fn memset_s 116function 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 124The 125.Fn memset 126function 127conforms to 128.St -isoC . 129.Fn memset_s 130conforms to 131.St -isoC-2011 132K.3.7.4.1. 133