mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
util: fix multiply-alloc helpers with size==0
Passing 0 to malloc() is not required to return NULL. Therefore, don't bail out if "b" is 0. This is not of importance to the existing helpers, but the upcoming realloc_multiply() requires this. To keep consistence, we keep the same behavior for the other helpers.
This commit is contained in:
parent
d442e2ec6e
commit
368504f485
@ -666,14 +666,14 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent);
|
|||||||
#define _cleanup_close_pair_ _cleanup_(close_pairp)
|
#define _cleanup_close_pair_ _cleanup_(close_pairp)
|
||||||
|
|
||||||
_malloc_ _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) {
|
_malloc_ _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) {
|
||||||
if (_unlikely_(b == 0 || a > ((size_t) -1) / b))
|
if (_unlikely_(b != 0 && a > ((size_t) -1) / b))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return malloc(a * b);
|
return malloc(a * b);
|
||||||
}
|
}
|
||||||
|
|
||||||
_alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t a, size_t b) {
|
_alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t a, size_t b) {
|
||||||
if (_unlikely_(b == 0 || a > ((size_t) -1) / b))
|
if (_unlikely_(b != 0 && a > ((size_t) -1) / b))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return memdup(p, a * b);
|
return memdup(p, a * b);
|
||||||
|
Loading…
Reference in New Issue
Block a user