v1-0001-Fix-Add-connection-validation-to-ECPGdeallocate_a.patch
application/octet-stream
Filename: v1-0001-Fix-Add-connection-validation-to-ECPGdeallocate_a.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v1-0001
Subject: Fix: Add connection validation to ECPGdeallocate_all() and ECPGprepared_statement()
| File | + | − |
|---|---|---|
| src/interfaces/ecpg/ecpglib/prepare.c | 20 | 4 |
From 2f57007f201c5c65b21d3bab866c7488c966a494 Mon Sep 17 00:00:00 2001
From: shruthi gowda <shruthi.kc@enterprisedb.com>
Date: Mon, 8 Dec 2025 15:20:08 +0000
Subject: [PATCH v1] Fix: Add connection validation to ECPGdeallocate_all() and
ECPGprepared_statement()
This commit adds the required connection validation at the start of these
functions to ensure they handle a disconnected state gracefully without
crashing the application.
---
src/interfaces/ecpg/ecpglib/prepare.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/src/interfaces/ecpg/ecpglib/prepare.c b/src/interfaces/ecpg/ecpglib/prepare.c
index 5c7c5397535..96be4396415 100644
--- a/src/interfaces/ecpg/ecpglib/prepare.c
+++ b/src/interfaces/ecpg/ecpglib/prepare.c
@@ -381,8 +381,16 @@ ecpg_deallocate_all_conn(int lineno, enum COMPAT_MODE c, struct connection *con)
bool
ECPGdeallocate_all(int lineno, int compat, const char *connection_name)
{
- return ecpg_deallocate_all_conn(lineno, compat,
- ecpg_get_connection(connection_name));
+ struct connection *con;
+
+ con = ecpg_get_connection(connection_name);
+ if (!con)
+ {
+ ecpg_raise(lineno, ECPG_NO_CONN, ECPG_SQLSTATE_CONNECTION_DOES_NOT_EXIST,
+ connection_name ? connection_name : ecpg_gettext("NULL"));
+ return false;
+ }
+ return ecpg_deallocate_all_conn(lineno, compat, con);
}
char *
@@ -399,9 +407,17 @@ ecpg_prepared(const char *name, struct connection *con)
char *
ECPGprepared_statement(const char *connection_name, const char *name, int lineno)
{
- (void) lineno; /* keep the compiler quiet */
+ struct connection *con;
+
+ con = ecpg_get_connection(connection_name);
+ if (!con)
+ {
+ ecpg_raise(lineno, ECPG_NO_CONN, ECPG_SQLSTATE_CONNECTION_DOES_NOT_EXIST,
+ connection_name ? connection_name : ecpg_gettext("NULL"));
+ return NULL;
+ }
- return ecpg_prepared(name, ecpg_get_connection(connection_name));
+ return ecpg_prepared(name, con);
}
/*
--
2.43.0