parse_cgi_parameters(): Make sure the maximum number of segments is large enough
authorFabian Keil <fk@fabiankeil.de>
Sat, 30 Jan 2021 14:04:17 +0000 (15:04 +0100)
committerFabian Keil <fk@fabiankeil.de>
Sat, 30 Jan 2021 16:21:25 +0000 (17:21 +0100)
... for ssplit() to succeed.

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

Reported by: Joshua Rogers (Opera)

cgi.c

diff --git a/cgi.c b/cgi.c
index 53587e9..6c78806 100644 (file)
--- 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.
     */
     *      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();
    vector = malloc_or_die(max_segments * sizeof(char *));
 
    cgi_params = new_map();