From: Guy Helmer Date: Sun, 27 Sep 2015 00:09:40 +0000 (-0700) Subject: Bug 4208: more than one port in wccp2_service_info line causes error X-Git-Tag: SQUID_3_5_10~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2894134647fa8b3f25d42250cdfbd6a09eee3017;p=thirdparty%2Fsquid.git Bug 4208: more than one port in wccp2_service_info line causes error --- diff --git a/src/wccp2.cc b/src/wccp2.cc index 960d46442b..4bc5357a8b 100644 --- a/src/wccp2.cc +++ b/src/wccp2.cc @@ -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);