From 4981cfc420ab9f9cd3c51e146cbad2c1aa95c4e9 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Mon, 18 Nov 2019 15:53:45 -0600 Subject: [PATCH] roken: base64: set errno on decode errors --- lib/roken/base64.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/roken/base64.c b/lib/roken/base64.c index 93eac061e..ddb733c52 100644 --- a/lib/roken/base64.c +++ b/lib/roken/base64.c @@ -132,13 +132,19 @@ rk_base64_decode(const char *str, void *data) for (p = str; *p && (*p == '=' || strchr(base64_chars, *p)); p += 4) { unsigned int val = token_decode(p); unsigned int marker = (val >> 24) & 0xff; - if (val == DECODE_ERROR) + if (val == DECODE_ERROR) { + errno = EINVAL; return -1; + } *q++ = (val >> 16) & 0xff; if (marker < 2) *q++ = (val >> 8) & 0xff; if (marker < 1) *q++ = val & 0xff; } + if (q - (unsigned char *) data > INT_MAX) { + errno = EOVERFLOW; + return -1; + } return q - (unsigned char *) data; }