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:
@@ -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) \
|
||||
|
Reference in New Issue
Block a user