]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 4208: more than one port in wccp2_service_info line causes error
authorGuy Helmer <ghelmer@palisadesys.com>
Sun, 27 Sep 2015 00:09:40 +0000 (17:09 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 27 Sep 2015 00:09:40 +0000 (17:09 -0700)
src/wccp2.cc

index 960d46442bc3b922b113fbc3ccd5d5de06b60b26..4bc5357a8bc74ee223154696f0b5995a8687f2f0 100644 (file)
@@ -2238,12 +2238,19 @@ parse_wccp2_service_ports(char *options, int portlist[])
 
     int i = 0;
     char *tmp = options;
+    static char copy[10];
 
     while (size_t len = strcspn(tmp, ",")) {
         if (i >= WCCP2_NUMPORTS) {
             fatalf("parse_wccp2_service_ports: too many ports (maximum: 8) in list '%s'\n", options);
         }
-        int p = xatoi(tmp);
+        if (len > 6) { // 6 because "65535,"
+            fatalf("parse_wccp2_service_ports: port value '%s' isn't valid (1..65535)\n", tmp);
+        }
+
+        memcpy(copy, tmp, len);
+        copy[len] = '\0';
+        int p = xatoi(copy);
 
         if (p < 1 || p > 65535) {
             fatalf("parse_wccp2_service_ports: port value '%s' isn't valid (1..65535)\n", tmp);