diff --git a/lib/isc/buffer.c b/lib/isc/buffer.c index 3e24a27b27..79b64d75c4 100644 --- a/lib/isc/buffer.c +++ b/lib/isc/buffer.c @@ -59,7 +59,10 @@ isc_buffer_reinit(isc_buffer_t *b, void *base, unsigned int length) { REQUIRE(base != NULL); REQUIRE(!b->autore); - (void)memmove(base, b->base, b->length); + if (b->length > 0U) { + (void)memmove(base, b->base, b->length); + } + b->base = base; b->length = length; } @@ -253,7 +256,9 @@ isc_buffer_compact(isc_buffer_t *b) { src = isc_buffer_current(b); length = isc_buffer_remaininglength(b); - (void)memmove(b->base, src, (size_t)length); + if (length > 0U) { + (void)memmove(b->base, src, (size_t)length); + } if (b->active > b->current) b->active -= b->current; @@ -526,8 +531,10 @@ isc_buffer_copyregion(isc_buffer_t *b, const isc_region_t *r) { } if (r->length > available) return (ISC_R_NOSPACE); - memmove(base, r->base, r->length); - b->used += r->length; + if (r->length > 0U) { + memmove(base, r->base, r->length); + b->used += r->length; + } return (ISC_R_SUCCESS); } diff --git a/lib/isc/include/isc/buffer.h b/lib/isc/include/isc/buffer.h index 8eb7791a09..9af0f40fe3 100644 --- a/lib/isc/include/isc/buffer.h +++ b/lib/isc/include/isc/buffer.h @@ -920,8 +920,10 @@ ISC_LANG_ENDDECLS == ISC_R_SUCCESS); \ } \ ISC_REQUIRE(isc_buffer_availablelength(_b) >= (unsigned int) _length); \ - memmove(isc_buffer_used(_b), (_base), (_length)); \ - (_b)->used += (_length); \ + if (_length > 0U) { \ + memmove(isc_buffer_used(_b), (_base), (_length)); \ + (_b)->used += (_length); \ + } \ } while (0) #define ISC__BUFFER_PUTSTR(_b, _source) \ diff --git a/lib/isc/netaddr.c b/lib/isc/netaddr.c index 0f29a6fff3..233c1e90df 100644 --- a/lib/isc/netaddr.c +++ b/lib/isc/netaddr.c @@ -166,7 +166,7 @@ isc_netaddr_totext(const isc_netaddr_t *netaddr, isc_buffer_t *target) { return (ISC_R_NOSPACE); isc_buffer_putmem(target, (unsigned char *)abuf, alen); - isc_buffer_putmem(target, (unsigned char *)zbuf, zlen); + isc_buffer_putmem(target, (unsigned char *)zbuf, (unsigned int)zlen); return (ISC_R_SUCCESS); }