1 .\"
   2 .\" This file and its contents are supplied under the terms of the
   3 .\" Common Development and Distribution License ("CDDL"), version 1.0.
   4 .\" You may only use this file in accordance with the terms of version
   5 .\" 1.0 of the CDDL.
   6 .\"
   7 .\" A full copy of the text of the CDDL should have accompanied this
   8 .\" source.  A copy of the CDDL is also available via the Internet at
   9 .\" http://www.illumos.org/license/CDDL.
  10 .\"
  11 .\"
  12 .\" Copyright 2018 Nexenta Systems, Inc.
  13 .\"
  14 .Dd August 12, 2017
  15 .Dt MEMSET_S 3C
  16 .Os
  17 .Sh NAME
  18 .Nm memset_s
  19 .Nd copy a value to all bytes of a memory buffer
  20 .Sh LIBRARY
  21 .Lb libc
  22 .Sh SYNOPSIS
  23 .Fd #define __STDC_WANT_LIB_EXT1__ 1
  24 .In string.h
  25 .Ft errno_t
  26 .Fo memset_s
  27 .Fa "void *s"
  28 .Fa "rsize_t smax"
  29 .Fa "int c"
  30 .Fa "rsize_t n"
  31 .Fc
  32 .Sh DESCRIPTION
  33 The
  34 .Fn memset_s
  35 function copies the value of
  36 .Fa c
  37 .Po converted to an
  38 .Vt unsigned char
  39 .Pc
  40 into each of the first
  41 .Fa n
  42 bytes of the memory buffer pointed to by
  43 .Fa s .
  44 .Pp
  45 Unlike the
  46 .Xr memset 3C ,
  47 .Fn memset_s
  48 is guaranteed to never be optimized away by the compiler.
  49 .Pp
  50 The
  51 .Fn memset_s
  52 function detects the following runtime-constraint violations:
  53 .Bl -enum
  54 .It
  55 .Fa s
  56 is a
  57 .Dv NULL
  58 pointer.
  59 .It
  60 .Fa smax
  61 or
  62 .Fa n
  63 is greater than
  64 .Dv RSIZE_MAX .
  65 .It
  66 .Fa n
  67 is greater than
  68 .Fa smax
  69 .Pq buffer overflow .
  70 .El
  71 .Pp
  72 If runtime-constraint violation is detected, and if
  73 .Fa s
  74 and
  75 .Fa smax
  76 are valid, the
  77 .Fn memset_s
  78 function copies the value of
  79 .Fa c
  80 .Po converted to an
  81 .Vt unsigned char
  82 .Pc
  83 into each of the first
  84 .Fa smax
  85 bytes of the memory buffer pointed to by
  86 .Fa s
  87 before calling the runtime-constraint handler.
  88 .Sh RETURN VALUES
  89 The
  90 .Fn memset_s
  91 function returns 0 if there was no runtime-constraint violation.
  92 Otherwise, a non-zero value is returned.
  93 .Sh INTERFACE STABILITY
  94 .Sy Standard
  95 .Sh MT-LEVEL
  96 .Sy Safe
  97 .Sh SEE ALSO
  98 .Xr memset 3C ,
  99 .Xr set_constraint_handler 3C
 100 .Sh STANDARDS
 101 The
 102 .Fn memset_s
 103 function conforms to
 104 .St -isoC-2011 .