From: Wez Furlong Date: Sun, 30 Apr 2006 00:52:28 +0000 (+0000) Subject: Fix #35552 X-Git-Tag: RELEASE_1_0_3~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aa5dbc8c9263b53b646980998e1d2eea03323f37;p=php Fix #35552 --- diff --git a/NEWS b/NEWS index 60154813c7..353e1d5985 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2006, PHP 5.2.0 +- Fixed bug #35552 (crash when pdo_odbc prepare fails). (Wez). 28 Apr 2006, PHP 5.1.3 - Updated bundled PCRE library to version 6.6. (Andrei) diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c index 08120720be..8309b23a5a 100755 --- a/ext/pdo_odbc/odbc_driver.c +++ b/ext/pdo_odbc/odbc_driver.c @@ -198,13 +198,21 @@ static int odbc_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len, p efree(nsql); } + stmt->driver_data = S; + stmt->methods = &odbc_stmt_methods; + if (rc != SQL_SUCCESS) { pdo_odbc_stmt_error("SQLPrepare"); + if (rc != SQL_SUCCESS_WITH_INFO) { + /* clone error information into the db handle */ + strcpy(H->einfo.last_err_msg, S->einfo.last_err_msg); + H->einfo.file = S->einfo.file; + H->einfo.line = S->einfo.line; + H->einfo.what = S->einfo.what; + strcpy(dbh->error_code, stmt->error_code); + } } - stmt->driver_data = S; - stmt->methods = &odbc_stmt_methods; - if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { return 0; }