From: Lennart Poettering Date: Tue, 27 Mar 2018 12:56:04 +0000 (+0200) Subject: util: check for overflows in xbsearch_r() X-Git-Tag: v239~457^2~3 X-Git-Url: http://git-history.diyao.me/?a=commitdiff_plain;h=2901f4b31ffee670f9d3a97676a2b99eb04297d5;p=systemd%2F.git util: check for overflows in xbsearch_r() --- diff --git a/src/basic/util.c b/src/basic/util.c index 7863a14fb2..b0303a17fa 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -181,11 +181,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;