1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-17 06:41:09 +03:00

Fix resource leak pointed out by Coverity.

This commit is contained in:
Tatsuo Ishii
2014-12-30 19:37:55 +09:00
parent 312efcf43e
commit 9b74f35744

View File

@ -1337,12 +1337,16 @@ parseQuery(Command *cmd, const char *raw_sql)
if (cmd->argc >= MAX_ARGS) if (cmd->argc >= MAX_ARGS)
{ {
fprintf(stderr, "statement has too many arguments (maximum is %d): %s\n", MAX_ARGS - 1, raw_sql); fprintf(stderr, "statement has too many arguments (maximum is %d): %s\n", MAX_ARGS - 1, raw_sql);
free(name);
return false; return false;
} }
sprintf(var, "$%d", cmd->argc); sprintf(var, "$%d", cmd->argc);
if ((p = replaceVariable(&sql, p, eaten, var)) == NULL) if ((p = replaceVariable(&sql, p, eaten, var)) == NULL)
{
free(name);
return false; return false;
}
cmd->argv[cmd->argc] = name; cmd->argv[cmd->argc] = name;
cmd->argc++; cmd->argc++;
@ -1504,7 +1508,10 @@ process_commands(char *buf)
case QUERY_EXTENDED: case QUERY_EXTENDED:
case QUERY_PREPARED: case QUERY_PREPARED:
if (!parseQuery(my_commands, p)) if (!parseQuery(my_commands, p))
{
free(my_commands);
return NULL; return NULL;
}
break; break;
default: default:
return NULL; return NULL;
@ -1560,6 +1567,7 @@ process_file(char *filename)
commands = process_commands(&buf[i]); commands = process_commands(&buf[i]);
if (commands == NULL) if (commands == NULL)
{ {
free(my_commands);
fclose(fd); fclose(fd);
return false; return false;
} }
@ -1630,6 +1638,7 @@ process_builtin(char *tb)
commands = process_commands(buf); commands = process_commands(buf);
if (commands == NULL) if (commands == NULL)
{ {
free(my_commands);
return NULL; return NULL;
} }