File tree 1 file changed +14
-1
lines changed
1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -230,6 +230,19 @@ zend_bool s_memc_valid_key_binary(zend_string *key)
230
230
return memchr (ZSTR_VAL (key ), '\n' , ZSTR_LEN (key )) == NULL ;
231
231
}
232
232
233
+ static
234
+ uint32_t s_memc_object_key_max_length (php_memc_object_t * intern ) {
235
+ memcached_return retval ;
236
+ char * result ;
237
+
238
+ result = memcached_callback_get (intern -> memc , MEMCACHED_CALLBACK_PREFIX_KEY , & retval );
239
+ if (retval == MEMCACHED_SUCCESS && result ) {
240
+ return MEMC_OBJECT_KEY_MAX_LENGTH - strlen (result );
241
+ } else {
242
+ return MEMC_OBJECT_KEY_MAX_LENGTH ;
243
+ }
244
+ }
245
+
233
246
static
234
247
zend_bool s_memc_valid_key_ascii (zend_string * key )
235
248
{
@@ -245,7 +258,7 @@ zend_bool s_memc_valid_key_ascii(zend_string *key)
245
258
246
259
#define MEMC_CHECK_KEY (intern , key ) \
247
260
if (UNEXPECTED(ZSTR_LEN(key) == 0 || \
248
- ZSTR_LEN(key) > MEMC_OBJECT_KEY_MAX_LENGTH || \
261
+ ZSTR_LEN(key) > s_memc_object_key_max_length(intern) || \
249
262
(memcached_behavior_get(intern->memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) \
250
263
? !s_memc_valid_key_binary(key) \
251
264
: !s_memc_valid_key_ascii(key) \
You can’t perform that action at this time.
0 commit comments