X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_callback.c;h=d1c042429b4d5fd4569a98a649f0ede6f2ac957f;hb=272ffde5fd710e85607c0033ad80792d415f26b7;hp=c231716d9b8ca9a35dab5fe67519b27d8b24cd4b;hpb=d5ffc30a6f369ea210e92e6a55333121d32b9a55;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_callback.c b/libmemcached/memcached_callback.c index c231716d..d1c04242 100644 --- a/libmemcached/memcached_callback.c +++ b/libmemcached/memcached_callback.c @@ -19,13 +19,23 @@ memcached_return memcached_callback_set(memcached_st *ptr, if (key) { - ptr->prefix_key_length= strlen(key); - if ((ptr->prefix_key_length > MEMCACHED_PREFIX_KEY_MAX_SIZE -1) + size_t key_length= strlen(key); + + if (memcachd_key_test((char **)&key, &key_length, 1) == MEMCACHED_BAD_KEY_PROVIDED) + { + return MEMCACHED_BAD_KEY_PROVIDED; + } + + if ((key_length > MEMCACHED_PREFIX_KEY_MAX_SIZE -1) || (strcpy(ptr->prefix_key, key) == NULL)) { ptr->prefix_key_length= 0; return MEMCACHED_BAD_KEY_PROVIDED; } + else + { + ptr->prefix_key_length= key_length; + } } else { @@ -101,8 +111,16 @@ void *memcached_callback_get(memcached_st *ptr, { case MEMCACHED_CALLBACK_PREFIX_KEY: { - *error= ptr->prefix_key[0] != 0 ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE; - return (void *)ptr->prefix_key; + if (ptr->prefix_key[0] == 0) + { + *error= MEMCACHED_FAILURE; + return NULL; + } + else + { + *error= MEMCACHED_SUCCESS; + return (void *)ptr->prefix_key; + } } case MEMCACHED_CALLBACK_USER_DATA: {