X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Foptions.cc;h=290cfc895b434c90868563ae37476237454dca84;hb=0792d5bdd0b2a352cce1a4cb084eca19b15acc56;hp=ad28c6644a6ed29a84779c244fd880117a1faba5;hpb=3c4d734f56530d43520f385bff97162c04ac81ac;p=m6w6%2Flibmemcached diff --git a/libmemcached/options.cc b/libmemcached/options.cc index ad28c664..290cfc89 100644 --- a/libmemcached/options.cc +++ b/libmemcached/options.cc @@ -38,7 +38,7 @@ #include #include -#include +#include const char *memcached_parse_filename(memcached_st *memc) { @@ -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; } }