pgpool2.git / summary / log / commit / refs

commit    dc19f4a9082ff1c90cf232167cf94236f8f09830
Author:   Bo Peng <pengbo@sraoss.co.jp>
Date:     Mon Jun 18 08:54:21 2018 +0000

    Fix memory leak pointed out by Coverity.


src/config/pool_config_variables.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/config/pool_config_variables.c b/src/config/pool_config_variables.c index d726b1867..aa4486fda 100644 --- a/src/config/pool_config_variables.c +++ b/src/config/pool_config_variables.c @@ -2503,7 +2503,7 @@ static char **get_list_from_string_regex_delim(const char *input, const char *de int j = 0; char *output; char *str; - char *buf; + char *buf, * str_temp; char **tokens; const int MAXTOKENS = 256; *n = 0; @@ -2524,28 +2524,29 @@ static char **get_list_from_string_regex_delim(const char *input, const char *de } buf = str; + str_temp = str; - while(*str != '\0') + while(*str_temp != '\0') { - if (*str == '\\') + if (*str_temp == '\\') { j += 2; - str++; + str_temp++; } - else if (*str == *delimi) + else if (*str_temp == *delimi) { output = (char *) palloc(j + 1); StrNCpy(output, buf, j + 1); /* replace escape character of "'"*/ - tokens[*n] = pstrdup(string_replace(output, "\\'", "'")); + tokens[*n] = string_replace(output, "\\'", "'"); ereport(DEBUG3, (errmsg("initializing pool configuration"), errdetail("extracting string tokens [token[%d]: %s]", *n, tokens[*n]))); (*n)++; - buf = str + 1; + buf = str_temp + 1; j = 0; if ( ((*n) % MAXTOKENS ) == 0) @@ -2555,12 +2556,14 @@ static char **get_list_from_string_regex_delim(const char *input, const char *de { j++; } - str++; + str_temp++; } if (*n > 0) tokens = repalloc(tokens, (sizeof(char *) * (*n) )); + pfree(str); + return tokens; #else return NULL; [parent: c84f0255704c]