diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-03-27 14:56:04 +0200 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2018-08-24 16:47:08 +0200 |
commit | 1a32e6e6b0f8efd825ba0c4fc4d144a65f799455 (patch) | |
tree | a21e91a150a83b2b7aa42d07ba30f3230ed52d5d | |
parent | a050646566dba3b7740649fed16db16e202d8977 (diff) |
util: check for overflows in xbsearch_r()
-rw-r--r-- | src/basic/util.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/basic/util.c b/src/basic/util.c index e096e3194..3ea2e6f67 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -186,11 +186,13 @@ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, const void *p; int comparison; + assert(!size_multiply_overflow(nmemb, size)); + l = 0; u = nmemb; while (l < u) { idx = (l + u) / 2; - p = (const char *) base + idx * size; + p = (const uint8_t*) base + idx * size; comparison = compar(key, p, arg); if (comparison < 0) u = idx; |