tree-wide: various ubsan zero size memory fixes

Fixes: #10346
This commit is contained in:
Lennart Poettering 2018-10-10 11:34:30 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent ca92fe36e0
commit 65f95765d0
3 changed files with 9 additions and 3 deletions

View File

@ -206,7 +206,7 @@ bool bitmap_equal(Bitmap *a, Bitmap *b) {
return true;
common_n_bitmaps = MIN(a->n_bitmaps, b->n_bitmaps);
if (memcmp(a->bitmaps, b->bitmaps, sizeof(uint64_t) * common_n_bitmaps) != 0)
if (memcmp_safe(a->bitmaps, b->bitmaps, sizeof(uint64_t) * common_n_bitmaps) != 0)
return false;
c = a->n_bitmaps > b->n_bitmaps ? a : b;

View File

@ -150,7 +150,13 @@ static inline int memcmp_safe(const void *s1, const void *s2, size_t n) {
int on_ac_power(void);
#define memzero(x,l) (memset((x), 0, (l)))
#define memzero(x,l) \
({ \
size_t _l_ = (l); \
void *_x_ = (x); \
_l_ == 0 ? _x_ : memset(_x_, 0, _l_); \
})
#define zero(x) (memzero(&(x), sizeof(x)))
static inline void *mempset(void *s, int c, size_t n) {

View File

@ -84,7 +84,7 @@ static void test_unhexmem_one(const char *s, size_t l, int retval) {
l = strlen(s);
assert_se(hex = hexmem(mem, len));
answer = strndupa(s, l);
answer = strndupa(s ?: "", l);
assert_se(streq(delete_chars(answer, WHITESPACE), hex));
}
}