summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rwxr-xr-xext/pdo_odbc/odbc_stmt.c12
2 files changed, 10 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index a0acb43836..1d01aa74f1 100644
--- a/NEWS
+++ b/NEWS
@@ -47,6 +47,9 @@ PHP NEWS
. Fixed bug #61194 (PDO should export compression flag with myslqnd).
(Johannes)
+- PDO_odbc
+ . Fixed bug #61212 (PDO ODBC Segfaults on SQL_SUCESS_WITH_INFO). (Ilia)
+
- PDO_pgsql
. Fixed bug #61267 (pdo_pgsql's PDO::exec() returns the number of SELECTed
rows on postgresql >= 9). (ben dot pineau at gmail dot com)
diff --git a/ext/pdo_odbc/odbc_stmt.c b/ext/pdo_odbc/odbc_stmt.c
index aabe3dcc36..4e039d2a74 100755
--- a/ext/pdo_odbc/odbc_stmt.c
+++ b/ext/pdo_odbc/odbc_stmt.c
@@ -637,12 +637,14 @@ static int odbc_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned l
if (C->fetched_len != SQL_NO_TOTAL) {
/* use size suggested by the driver, if it knows it */
- alloced = C->fetched_len + 1;
+ buf = emalloc(C->fetched_len + 1);
+ memcpy(buf, C->data, C->fetched_len);
+ buf[C->fetched_len] = 0;
+ used = C->fetched_len;
+ } else {
+ buf = estrndup(C->data, 256);
+ used = 255; /* not 256; the driver NUL terminated the buffer */
}
-
- buf = emalloc(alloced);
- memcpy(buf, C->data, 256);
- used = 255; /* not 256; the driver NUL terminated the buffer */
do {
C->fetched_len = 0;