tAdd checks to original URL parsing - phroxy - Gopher to HTTP proxy
 (HTM) git clone git://git.z3bra.org/phroxy.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 1ae65b7b2d472fd5236139bb8a6f1ed96ac55ef9
 (DIR) parent 65b08e3fe1928eb217aa59c7f936d13b9a6a5031
 (HTM) Author: Willy Goiffon <dev@z3bra.org>
       Date:   Mon, 14 Sep 2020 16:10:37 +0200
       
       Add checks to original URL parsing
       
       Diffstat:
         M phroxy.c                            |      35 +++++++++++++++++++-------------
       
       1 file changed, 21 insertions(+), 14 deletions(-)
       ---
 (DIR) diff --git a/phroxy.c b/phroxy.c
       t@@ -343,24 +343,31 @@ phroxy(char *url)
        {
                int sock;
                size_t len;
       -        char item = 0;
       -        char *hole, *path, *host, *port;
       -        char *data = NULL;
       +        char *hole, *item, *path, *host, *port;
       +        char *data = NULL, *srch = NULL;
        
       -        hole = url + 1;
       -        hole = strsep(&hole, "/");
       -        item = hole[strlen(hole) + 1];
       -        path = hole + strlen(hole) + 2;
       +        url++;
       +        hole = strsep(&url, "/");
       +        if (!hole) {
       +                print404();
       +                return 1;
       +        }
        
       -        host = strtok(hole, ":");
       -        port = strtok(NULL, "\0");
       +        host = strsep(&hole, ":");
       +        port = strsep(&hole, "\0");
                if (!port)
                        port = "70";
        
       -        if (!hole || !item) {
       -                print404();
       -                return 1;
       -        }
       +        item = strsep(&url, "/");
       +        if (!item)
       +                item = "1";
       +
       +        path = strsep(&url, "\0");
       +        if (!path)
       +                path = "/";
       +
       +        if((srch = strchr(path, '?')))
       +                *srch = '\t';
        
                sock = connectto(host, port);
                if (!sendselector(sock, path))
       t@@ -371,7 +378,7 @@ phroxy(char *url)
                if (!data)
                        return 1;
        
       -        serveitem(item, data, len);
       +        serveitem(*item, data, len);
        
                return 0;
        }