[php-src] PHP-8.5: Merge branch 'PHP-8.4' into PHP-8.5
Ilia Alshanetsky <[email protected]>
| Newsgroups | gmane.comp.php.cvs.general |
|---|---|
| Message-ID | <[email protected]> |
Author: Ilia Alshanetsky (iliaal)
Date: 2026-06-30T07:36:58-04:00
Commit: https://github.com/php/php-src/commit/92c179e640e43e4f4b183c8bfac6965f09e2cf4e
Raw diff: https://github.com/php/php-src/commit/92c179e640e43e4f4b183c8bfac6965f09e2cf4e.diff
Merge branch 'PHP-8.4' into PHP-8.5
* PHP-8.4:
Fix GH-20726: crash in pdo_odbc with pooling and no credentials (#22512)
Changed paths:
M NEWS
M ext/pdo_odbc/odbc_driver.c
Diff:
diff --git a/NEWS b/NEWS
index 4cfba419baa7..91f69440f6fd 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,10 @@ PHP NEWS
- Lexbor:
. Merge patch c3a6847. (ilutov, timwolla)
+- PDO_ODBC:
+ . Fixed bug GH-20726 (Crash with ODBC connection pooling when the DSN
+ carries no credentials). (iliaal)
+
- Phar:
. Fixed inconsistent handling of the magic ".phar" directory. Paths such as
"/.phar" remain protected, while non-magic paths that merely start with
diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c
index 7401023c573c..0367207e89bb 100644
--- a/ext/pdo_odbc/odbc_driver.c
+++ b/ext/pdo_odbc/odbc_driver.c
@@ -605,7 +605,11 @@ static int pdo_odbc_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /* {{{
dsnbuf, sizeof(dsnbuf)-1, &dsnbuflen, SQL_DRIVER_NOPROMPT);
}
if (!use_direct) {
- rc = SQLConnect(H->dbc, (SQLCHAR *) dbh->data_source, SQL_NTS, (SQLCHAR *) dbh->username, SQL_NTS, (SQLCHAR *) dbh->password, SQL_NTS);
+ /* unixODBC pooling strcmp()s the credentials when matching a cached
+ * connection and crashes on a NULL username/password, so pass "". */
+ rc = SQLConnect(H->dbc, (SQLCHAR *) dbh->data_source, SQL_NTS,
+ (SQLCHAR *) (dbh->username ? dbh->username : ""), SQL_NTS,
+ (SQLCHAR *) (dbh->password ? dbh->password : ""), SQL_NTS);
}
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {