X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=libmemcached%2Fmemcached_stats.c;h=3ad236d2108c347f8eb778c52e7211442b8cc222;hb=7e0ffed050b62cc5dcf5d16c148185074bfd7d50;hp=96f0eb1cfb7ebe28261b1d785c0fdf8f90c973bf;hpb=2b312deb8b7b3f662b492f94a13e673723387724;p=m6w6%2Flibmemcached diff --git a/libmemcached/memcached_stats.c b/libmemcached/memcached_stats.c index 96f0eb1c..3ad236d2 100644 --- a/libmemcached/memcached_stats.c +++ b/libmemcached/memcached_stats.c @@ -143,7 +143,7 @@ static void set_data(memcached_stat_st *stat, char *key, char *value) } char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *stat, - char *key, memcached_return *error) + const char *key, memcached_return *error) { char buffer[SMALL_STRING_LEN]; size_t length; @@ -227,6 +227,11 @@ static memcached_return binary_stats_fetch(memcached_st *ptr, if (args != NULL) { int len= strlen(args); + + rc= memcached_validate_key_length(len, true); + unlikely (rc != MEMCACHED_SUCCESS) + return rc; + request.message.header.request.keylen= htons((uint16_t)len); request.message.header.request.bodylen= htonl(len); @@ -335,6 +340,12 @@ memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_retur memcached_return rc; memcached_stat_st *stats; + if (ptr->flags & MEM_USE_UDP) + { + *error= MEMCACHED_NOT_SUPPORTED; + return NULL; + } + if (ptr->call_malloc) stats= (memcached_stat_st *)ptr->call_malloc(ptr, sizeof(memcached_stat_st)*(ptr->number_of_hosts)); else @@ -343,11 +354,6 @@ memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_retur if (!stats) { *error= MEMCACHED_MEMORY_ALLOCATION_FAILURE; - if (ptr->call_free) - ptr->call_free(ptr, stats); - else - free(stats); - return NULL; } memset(stats, 0, sizeof(memcached_stat_st)*(ptr->number_of_hosts));