diff --git a/http.c b/http.c index b94fed8c..ff331e6c 100644 --- a/http.c +++ b/http.c @@ -2889,8 +2889,8 @@ evhttp_decode_uri_internal( decode_plus = 1; } else if (c == '+' && decode_plus) { c = ' '; - } else if (c == '%' && EVUTIL_ISXDIGIT_(uri[i+1]) && - EVUTIL_ISXDIGIT_(uri[i+2])) { + } else if (length > 2 && i < (length - 2) && c == '%' && + EVUTIL_ISXDIGIT_(uri[i+1]) && EVUTIL_ISXDIGIT_(uri[i+2])) { char tmp[3]; tmp[0] = uri[i+1]; tmp[1] = uri[i+2];