X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fparse.cc;h=7665b731b3767f7c548f8e3ffbb3a0615b00ca8d;hb=4c1122cf139f7b073807f0a9187306518988a08f;hp=3284a4f643f48a92cb7a8eca2399eb362ba31b92;hpb=67456d74f5bd4f354a360d70da503dc58cbe5971;p=awesomized%2Flibmemcached diff --git a/libmemcached/parse.cc b/libmemcached/parse.cc index 3284a4f6..7665b731 100644 --- a/libmemcached/parse.cc +++ b/libmemcached/parse.cc @@ -87,7 +87,13 @@ memcached_server_list_st memcached_servers_parse(const char *server_strings) ptr++; + errno= 0; port= (in_port_t) strtoul(ptr, (char **)NULL, 10); + if (errno != 0) + { + memcached_server_free(servers); + return NULL; + } ptr2= index(ptr, ' '); if (! ptr2) @@ -96,14 +102,22 @@ memcached_server_list_st memcached_servers_parse(const char *server_strings) if (ptr2) { ptr2++; - weight = (uint32_t) strtoul(ptr2, (char **)NULL, 10); + errno= 0; + weight= uint32_t(strtoul(ptr2, (char **)NULL, 10)); + if (errno != 0) + { + memcached_server_free(servers); + return NULL; + } } } servers= memcached_server_list_append_with_weight(servers, buffer, port, weight, &rc); if (isspace(*begin_ptr)) + { begin_ptr++; + } } return servers;