safec  3.0
Safe C Library - ISO TR24731 Bounds Checking Interface
memcpy_s.c File Reference
#include "safe_mem_lib.h"
+ Include dependency graph for memcpy_s.c:

Functions

EXPORT errno_t memcpy_s (void *restrict dest, rsize_t dmax, const void *restrict src, rsize_t smax)
 This function copies at most smax bytes from src to dest, up to dmax. More...
 

Function Documentation

◆ memcpy_s()

EXPORT errno_t memcpy_s ( void *restrict  dest,
rsize_t  dmax,
const void *restrict  src,
rsize_t  smax 
)

This function copies at most smax bytes from src to dest, up to dmax.

Remarks
SPECIFIED IN
  • C11 standard (ISO/IEC 9899:2011): K.3.7.1.1 The memcpy_s function (p: 614) http://en.cppreference.com/w/c/string/byte/memcpy
  • ISO/IEC JTC1 SC22 WG14 N1172, Programming languages, environments and system software interfaces, Extensions to the C Library, Part I: Bounds-checking interfaces
Parameters
[out]destpointer to the memory that will be replaced by src.
[in]dmaxmaximum length of the resulting dest, in bytes
[in]srcpointer to the memory that will be copied to dest
[in]smaxmaximum number bytes of src that can be copied
Precondition
Neither dest nor src shall be a null pointer.
dmax shall not be 0.
dmax shall not be greater than RSIZE_MAX_MEM.
smax shall not be greater than dmax.
Copying shall not take place between regions that overlap.
Note
C11 uses RSIZE_MAX, not RSIZE_MAX_MEM.
Returns
If there is a runtime-constraint violation, the memcpy_s function stores zeros in the first dmax bytes of the region pointed to by dest if dest is not a null pointer and smax is valid.
Return values
EOKwhen operation is successful
ESNULLPwhen dest/src is NULL POINTER
ESZEROLwhen dmax = ZERO. Before C11 also with smax = ZERO
ESLEMAXwhen dmax/smax > RSIZE_MAX_MEM
ESNOSPCwhen dmax < smax
ESOVRLPwhen src memory overlaps dst
See also
memcpy16_s(), memcpy32_s(), memmove_s(), memmove16_s(), memmove32_s()