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$ 34.\" 35.Dd February 15, 2018 36.Dt MEMSET 3 37.Os 38.Sh NAME 39.Nm memset 40.Nd write a byte to byte string 41.Sh LIBRARY 42.Lb libc 43.Sh SYNOPSIS 44.In string.h 45.Ft void * 46.Fn memset "void *dest" "int c" "size_t len" 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 the length of buffer 66.Fa dest . 67The behaviour is also undefined if 68.Fa dest 69is an invalid pointer. 70.Pp 71The 72.Fn memset_s 73function behaves the same as 74.Fn memset 75except that an error is returned and the currently registered 76runtime-constraint handler is called if 77.Fa dest 78is a null pointer, 79.Fa destsz 80or 81.Fa len 82is greater than 83.Dv RSIZE_MAX , 84or 85.Sp 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 sensitve 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 swab 3 , 121.Xr wmemset 3 122.Sh STANDARDS 123The 124.Fn memset 125function 126conforms to 127.St -isoC . 128.Fn memset_s 129conforms to: 130.St -isoC-2011 131K.3.7.4.1. 132