X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Foptions.cc;h=290cfc895b434c90868563ae37476237454dca84;hb=728ae479bcecf3530430c4a2e62479ba7586484e;hp=cdaa520950a28e37ab1fc3690f61b0acf7ee1303;hpb=f92f0f9bcb54167331067b6891ee33e5f27d691c;p=awesomized%2Flibmemcached diff --git a/libmemcached/options.cc b/libmemcached/options.cc index cdaa5209..290cfc89 100644 --- a/libmemcached/options.cc +++ b/libmemcached/options.cc @@ -82,17 +82,26 @@ memcached_return_t libmemcached_check_configuration(const char *option_string, s { memcached_st memc, *memc_ptr; - if (error_buffer_size) + if (option_string == NULL or length == 0) + { + return MEMCACHED_INVALID_ARGUMENTS; + } + + if (error_buffer and error_buffer_size) + { error_buffer[0]= 0; + } if (not (memc_ptr= memcached_create(&memc))) + { return MEMCACHED_MEMORY_ALLOCATION_FAILURE; + } memcached_return_t rc= memcached_parse_configuration(memc_ptr, option_string, length); if (memcached_failed(rc) and error_buffer and error_buffer_size) { strncpy(error_buffer, memcached_last_error_message(memc_ptr), error_buffer_size); - error_buffer[length -1]= 0; + error_buffer[error_buffer_size -1]= 0; } bool has_filename= memcached_behavior_get(memc_ptr, MEMCACHED_BEHAVIOR_LOAD_FROM_FILE); @@ -102,9 +111,10 @@ memcached_return_t libmemcached_check_configuration(const char *option_string, s assert_msg(memcached_parse_filename_length(memc_ptr), "Invalid configuration file"); rc= _parse_file_options(*memc_ptr, memc_ptr->configure.filename); - if (memcached_failed(rc) and error_buffer && error_buffer_size) + if (memcached_failed(rc) and error_buffer and error_buffer_size) { strncpy(error_buffer, memcached_last_error_message(memc_ptr), error_buffer_size); + error_buffer[error_buffer_size -1]= 0; } }