From: Fabian Keil <fk@fabiankeil.de>
Date: Sat, 30 Jan 2021 14:04:17 +0000 (+0100)
Subject: parse_cgi_parameters(): Make sure the maximum number of segments is large enough
X-Git-Tag: v_3_0_31~11
X-Git-Url: http://www.privoxy.org/gitweb/%22https:/static/user-manual/@default-cgi@send-stylesheet?a=commitdiff_plain;h=5bba5b89193fa2eeea51aa39fb6525c47b59a82a;p=privoxy.git

parse_cgi_parameters(): Make sure the maximum number of segments is large enough

... for ssplit() to succeed.

Prevents an assertion from getting triggered. OVE-20210130-0001.

Reported by: Joshua Rogers (Opera)
---

diff --git a/cgi.c b/cgi.c
index 53587e95..6c788064 100644
--- a/cgi.c
+++ b/cgi.c
@@ -663,16 +663,7 @@ static struct map *parse_cgi_parameters(char *argstring)
     *      The same hack is used in get_last_url() so it looks like
     *      a real solution is needed.
     */
-   size_t max_segments = strlen(argstring) / 2;
-   if (max_segments == 0)
-   {
-      /*
-       * XXX: If the argstring is empty, there's really
-       *      no point in creating a param list, but currently
-       *      other parts of Privoxy depend on the list's existence.
-       */
-      max_segments = 1;
-   }
+   size_t max_segments = strlen(argstring) / 2 + 1;
    vector = malloc_or_die(max_segments * sizeof(char *));
 
    cgi_params = new_map();