diff --git a/stuffer/s2n_stuffer.c b/stuffer/s2n_stuffer.c index 33f5c60974c..6853ecceba1 100644 --- a/stuffer/s2n_stuffer.c +++ b/stuffer/s2n_stuffer.c @@ -121,7 +121,7 @@ int s2n_stuffer_wipe_n(struct s2n_stuffer *stuffer, const uint32_t size) } /* Use '0' instead of 0 precisely to prevent C string compatibility */ - memset(stuffer->blob.data + stuffer->write_cursor - n, '0', n); + memset_check(stuffer->blob.data + stuffer->write_cursor - n, '0', n); stuffer->write_cursor -= n; if (stuffer->write_cursor == 0) { diff --git a/utils/s2n_safety.h b/utils/s2n_safety.h index a2ac1748d3b..951e1fcfebc 100644 --- a/utils/s2n_safety.h +++ b/utils/s2n_safety.h @@ -27,8 +27,8 @@ /* Check memcpy's return, if it's not right (very unlikely!) bail, set an error * err and return -1; */ -#define memcpy_check( d, s, n ) do { notnull_check( (d) ); memcpy( (d), (s), (n)); } while(0) -#define memset_check( d, c, n ) do { notnull_check( (d) ); memset( (d), (c), (n)); } while(0) +#define memcpy_check( d, s, n ) do { if ( (n) ) { notnull_check( (d) ); memcpy( (d), (s), (n)); } } while(0) +#define memset_check( d, c, n ) do { if ( (n) ) { notnull_check( (d) ); memset( (d), (c), (n)); } } while(0) /* Range check a number */ #define gte_check(n, min) do { if ( (n) < min ) { S2N_ERROR(S2N_ERR_SAFETY); } } while(0)