ecpg: check return value of replace_variables()

The function returns false if it fails to allocate memory, so
make sure to check the return value in callsites.

Author: Aleksander Alekseev <aleksander@tigerdata.com>
Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
Discussion: https://postgr.es/m/CAJ7c6TNPrU8ZxgdfN3PyGY1tzo0bgszx+KkqW0Z7zt3heyC1GQ@mail.gmail.com
pull/245/head
Daniel Gustafsson 2 months ago
parent 6aa184c80f
commit 0d82163958
  1. 8
      src/interfaces/ecpg/ecpglib/prepare.c

@ -200,7 +200,13 @@ prepare_common(int lineno, struct connection *con, const char *name, const char
stmt->inlist = stmt->outlist = NULL;
/* if we have C variables in our statement replace them with '?' */
replace_variables(&(stmt->command), lineno);
if (!replace_variables(&(stmt->command), lineno))
{
ecpg_free(stmt->command);
ecpg_free(stmt);
ecpg_free(this);
return false;
}
/* add prepared statement to our list */
this->name = ecpg_strdup(name, lineno, NULL);

Loading…
Cancel
Save