Fix for zero length bad key fix.
author <brian@localhost.localdomain> <>
Sun, 27 Jul 2008 11:00:37 +0000 (04:00 -0700)
committer <brian@localhost.localdomain> <>
Sun, 27 Jul 2008 11:00:37 +0000 (04:00 -0700)
ChangeLog
libmemcached/memcached_key.c
tests/function.c

index 47c4f76c6530709f7559d914f420752ef1374f4e..f047278e7d889032500ad71db5163e6940fcb810 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
   * Solaris 64bit fix.
   * Support for weighted Ketama from Yin Chen.
   * Fix for Chinese 
+  * Fix for 0 length key to trigger bad key.
 
 0.22 Mon Jul 14 09:24:11 PDT 2008
   * Fix where master key was no being checked for "bad key"
index 4ea63919f0552f25d823284d820dcd713ea8e854..7513592b9efc9fe8f49aca92bc69ecc1b21a2baa 100644 (file)
@@ -8,6 +8,10 @@ memcached_return memcachd_key_test(char **keys, size_t *key_length,
   for (x= 0; x < number_of_keys; x++)
   {
     int y;
+
+    if (*(key_length + x) == 0)
+        return MEMCACHED_BAD_KEY_PROVIDED;
+
     for (y= 0; y < *(key_length + x); y++)
     {
       if ((isgraph(keys[x][y])) == 0)
index b0fc1fd871d3cab8a9e168d4f7adf7a0aa088d88..0b2c15d480035539fedb8bb3a2deadf9cb76552e 100644 (file)
@@ -630,6 +630,16 @@ test_return bad_key_test(memcached_st *memc)
     assert(rc == MEMCACHED_BAD_KEY_PROVIDED);
   }
 
+  /* Make sure zero length keys are marked as bad */
+  set= 1;
+  rc= memcached_behavior_set(clone, MEMCACHED_BEHAVIOR_VERIFY_KEY, set);
+  assert(rc == MEMCACHED_SUCCESS);
+  string= memcached_get(clone, key, 0,
+                        &string_length, &flags, &rc);
+  assert(rc == MEMCACHED_BAD_KEY_PROVIDED);
+  assert(string_length ==  0);
+  assert(!string);
+
   memcached_free(clone);
 
   return 0;