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

Functions

EXPORT errno_t memmove_s (void *dest, rsize_t dmax, const void *src, rsize_t smax)
 The memmove_s function copies smax bytes from the region pointed to by src into the region pointed to by dest. More...
 

Function Documentation

◆ memmove_s()

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

The memmove_s function copies smax bytes from the region pointed to by src into the region pointed to by dest.

This copying takes place as if the smax bytes from the region pointed to by src are first copied into a temporary array of smax bytes that does not overlap the region pointed to by dest or src, and then the smax bytes from the temporary array are copied into the object region to by dest.

Remarks
SPECIFIED IN
  • C11 standard (ISO/IEC 9899:2011): K.3.7.1.2 The memmove_s function (p: 615) http://en.cppreference.com/w/c/string/byte/memmove
  • ISO/IEC TR 24731, 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.
Note
C11 uses RSIZE_MAX, not RSIZE_MAX_MEM.
Returns
If there is a runtime-constraint violation, the memmove_s function stores zeros in the first dmax characters of the region pointed to by dest if dest is not a null pointer and dmax is not greater than RSIZE_MAX_MEM.
Return values
EOKwhen operation is successful
ESNULLPwhen dst/src is NULL POINTER
ESZEROLwhen dmax = ZERO. Before C11 also with smax = ZERO
ESLEMAXwhen dmax/smax > RSIZE_MAX_MEM
ESNOSPCwhen dmax < smax
See also
memmove16_s(), memmove32_s(), memcpy_s(), memcpy16_s() memcpy32_s()