diff options
author | Daniel Gustafsson <dgustafsson@postgresql.org> | 2025-10-17 10:03:15 +0200 |
---|---|---|
committer | Daniel Gustafsson <dgustafsson@postgresql.org> | 2025-10-17 10:03:15 +0200 |
commit | 0d82163958005b2ba56f8c58311888d142fa4509 (patch) | |
tree | dc35ba832acd331e2c0f188f4ee666db0b71cd1a | |
parent | 6aa184c80f0cb0e20572441e0189567ed5176e1d (diff) |
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
-rw-r--r-- | src/interfaces/ecpg/ecpglib/prepare.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/interfaces/ecpg/ecpglib/prepare.c b/src/interfaces/ecpg/ecpglib/prepare.c index 06f0135813b..4b1ae839506 100644 --- a/src/interfaces/ecpg/ecpglib/prepare.c +++ b/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); |