Add missing connection validation in ECPG ECPGdeallocate_all(), ECPGprepared_statement(), ECPGget_desc(), and ecpg_freeStmtCacheEntry() could crash with a SIGSEGV when called without an established connection (for example, when EXEC SQL CONNECT was forgotten or a non-existent connection name was used), because they dereferenced the result of ecpg_get_connection() without first checking it for NULL.
Each site is fixed in the style of the surrounding code. New tests are added for these conditions. Author: Shruthi Gowda <[email protected]> Reviewed-by: Tom Lane <[email protected]> Reviewed-by: Fujii Masao <[email protected]> Reviewed-by: Mahendra Singh Thalor <[email protected]> Reviewed-by: Nishant Sharma <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 14 Branch ------ REL_17_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/5d67549d941258d6d642ce24688c4c82bfd6e0a1 Modified Files -------------- src/interfaces/ecpg/ecpglib/descriptor.c | 12 +- src/interfaces/ecpg/ecpglib/prepare.c | 32 +++-- src/interfaces/ecpg/test/connect/.gitignore | 2 + src/interfaces/ecpg/test/connect/Makefile | 3 +- src/interfaces/ecpg/test/connect/meson.build | 1 + src/interfaces/ecpg/test/connect/test6.pgc | 68 ++++++++++ src/interfaces/ecpg/test/ecpg_schedule | 1 + src/interfaces/ecpg/test/expected/connect-test6.c | 146 +++++++++++++++++++++ .../ecpg/test/expected/connect-test6.stderr | 50 +++++++ .../ecpg/test/expected/connect-test6.stdout | 9 ++ 10 files changed, 312 insertions(+), 12 deletions(-)
