From 7d04e17444793a840f98a0283968b96502b112dc Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Thu, 12 Dec 2019 16:44:22 +0000 Subject: [PATCH] Fix buffer overflow checking in parse_hex(). The inputs to parse_hex are never untrusted data, so not security problem. Thanks to Klaus Eisentraut for finding this. --- src/util.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/util.c b/src/util.c index 079fe44..3806972 100644 --- a/src/util.c +++ b/src/util.c @@ -524,20 +524,20 @@ void prettyprint_time(char *buf, unsigned int t) int parse_hex(char *in, unsigned char *out, int maxlen, unsigned int *wildcard_mask, int *mac_type) { - int mask = 0, i = 0; + int done = 0, mask = 0, i = 0; char *r; if (mac_type) *mac_type = 0; - while (maxlen == -1 || i < maxlen) + while (!done && (maxlen == -1 || i < maxlen)) { for (r = in; *r != 0 && *r != ':' && *r != '-' && *r != ' '; r++) if (*r != '*' && !isxdigit((unsigned char)*r)) return -1; if (*r == 0) - maxlen = i; + done = 1; if (r != in ) {