From: Guy Helmer Date: Fri, 25 Sep 2015 23:16:48 +0000 (-0700) Subject: Bug 4208: more than one port in wccp2_service_info line causes error X-Git-Tag: SQUID_4_0_1~37 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=342e1833d765f62dc4db17c8be4245477a9afd2c;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 36317344d9..01cc818b95 100644 --- a/src/wccp2.cc +++ b/src/wccp2.cc @@ -2234,12 +2234,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);