X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_response.c;h=7402975f895761ade88c41864174b074e630c433;hb=3bd95102380ff8d9f2599f0965c09776344d0691;hp=19fa640076045faa1bdf0cdd5cbfbbad092e9cd1;hpb=d4dc795f136a3a652c5b13b4d818345c6080bceb;p=awesomized%2Flibmemcached diff --git a/lib/memcached_response.c b/lib/memcached_response.c index 19fa6400..7402975f 100644 --- a/lib/memcached_response.c +++ b/lib/memcached_response.c @@ -18,7 +18,6 @@ memcached_return memcached_response(memcached_st *ptr, unsigned int max_messages; - memset(buffer, 0, buffer_length); send_length= 0; max_messages= memcached_server_response_count(ptr, server_key); @@ -43,8 +42,13 @@ memcached_return memcached_response(memcached_st *ptr, buffer_ptr++; total_length++; - WATCHPOINT_ASSERT(total_length < buffer_length); + WATCHPOINT_ASSERT(total_length <= buffer_length); + + if (total_length >= buffer_length) + return MEMCACHED_PROTOCOL_ERROR; } + buffer_ptr++; + *buffer_ptr= 0; if (memcached_server_response_count(ptr, server_key)) memcached_server_response_decrement(ptr, server_key); @@ -52,7 +56,7 @@ memcached_return memcached_response(memcached_st *ptr, switch(buffer[0]) { - case 'V': /* VALUE */ + case 'V': /* VALUE || VERSION */ return MEMCACHED_SUCCESS; case 'O': /* OK */ return MEMCACHED_SUCCESS;