Remove dummy check in *flags assignment in memcached_fetch
[m6w6/libmemcached] / libmemcached / fetch.c
index 7baac5449510a99b763e3fce4f9c0e8c0b7ebc90..321ff85e7d586f0b0ac473c886ec68cbfdcb3e5a 100644 (file)
@@ -26,14 +26,18 @@ char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length,
 
   if (key)
   {
-    strncpy(key, result_buffer->key, result_buffer->key_length);
+    if (result_buffer->key_length > MEMCACHED_MAX_KEY)
+    {
+      *error= MEMCACHED_KEY_TOO_BIG;
+      *value_length= 0;
+
+      return NULL;
+    }
+    strncpy(key, result_buffer->item_key, result_buffer->key_length); // For the binary protocol we will cut off the key :(
     *key_length= result_buffer->key_length;
   }
 
-  if (result_buffer->flags)
-    *flags= result_buffer->flags;
-  else
-    *flags= 0;
+  *flags= result_buffer->item_flags;
 
   return memcached_string_c_copy(&result_buffer->value);
 }