2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-02 23:55:27 +00:00

isc_buffer_*(): if source can be NULL, only call memmove() when length is non-zero

Certain isc_buffer_*() functions might call memmove() with the second
argument (source) set to NULL and the third argument (length) set to 0.
While harmless, it triggers an ubsan warning:

    runtime error: null pointer passed as argument 2, which is declared to never be null

Modify all memmove() call sites in lib/isc/include/isc/buffer.h and
lib/isc/buffer.c which may potentially use NULL as the second argument
(source) so that memmove() is only called if the third argument (length)
is non-zero.
This commit is contained in:
Michał Kępień
2018-05-15 08:18:01 +02:00
parent 9bc6ba0be9
commit 6ddbca6f2b
3 changed files with 16 additions and 7 deletions

View File

@@ -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) \