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