]> granicus.if.org Git - libevent/commitdiff
Check error code of evhttp_add_header_internal() in evhttp_parse_query_impl()
authorAzat Khuzhin <azat@libevent.org>
Thu, 25 Jun 2020 06:08:31 +0000 (09:08 +0300)
committerAzat Khuzhin <azat@libevent.org>
Thu, 25 Jun 2020 06:41:54 +0000 (09:41 +0300)
http.c

diff --git a/http.c b/http.c
index e8f78826bb6d62ad8ad129cebaf3f7fde122991a..abd255dc3fc3399e96f908c89e850ec9e273fb8b 100644 (file)
--- a/http.c
+++ b/http.c
@@ -3524,6 +3524,7 @@ evhttp_parse_query_impl(const char *str, struct evkeyvalq *headers,
        p = argument = line;
        while (p != NULL && *p != '\0') {
                char *key, *value, *decoded_value;
+               int err;
                argument = strsep(&p, "&");
 
                value = argument;
@@ -3547,8 +3548,10 @@ evhttp_parse_query_impl(const char *str, struct evkeyvalq *headers,
                event_debug(("Query Param: %s -> %s\n", key, decoded_value));
                if (flags & EVHTTP_URI_QUERY_LAST_VAL)
                        evhttp_remove_header(headers, key);
-               evhttp_add_header_internal(headers, key, decoded_value);
+               err = evhttp_add_header_internal(headers, key, decoded_value);
                mm_free(decoded_value);
+               if (err)
+                       goto error;
        }
 
        result = 0;