From: Lennart Poettering Date: Fri, 16 Dec 2016 12:08:29 +0000 (+0100) Subject: util-lib: be stricter when decoding hex strings X-Git-Tag: v233.3~109 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=9e573be454b20f2d0b4ab341f9ffa132d1f26ac5;p=elogind.git util-lib: be stricter when decoding hex strings If a hex string has an uneven length, generate an error instead of silently assuming a trailing '0' was in place. --- diff --git a/src/basic/hexdecoct.c b/src/basic/hexdecoct.c index c5bda6c4d..6843aedd0 100644 --- a/src/basic/hexdecoct.c +++ b/src/basic/hexdecoct.c @@ -97,6 +97,9 @@ int unhexmem(const char *p, size_t l, void **mem, size_t *len) { assert(len); assert(p); + if (l % 2 != 0) + return -EINVAL; + z = r = malloc((l + 1) / 2 + 1); if (!r) return -ENOMEM; @@ -107,12 +110,10 @@ int unhexmem(const char *p, size_t l, void **mem, size_t *len) { a = unhexchar(x[0]); if (a < 0) return a; - else if (x+1 < p + l) { - b = unhexchar(x[1]); - if (b < 0) - return b; - } else - b = 0; + + b = unhexchar(x[1]); + if (b < 0) + return b; *(z++) = (uint8_t) a << 4 | (uint8_t) b; }