summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSara Golemon <pollita@php.net>2016-12-25 22:07:09 -0800
committerSara Golemon <pollita@php.net>2016-12-25 22:07:09 -0800
commitfcd4c34cb3c32b55c2cbe2b5e8c784e5b2c0873e (patch)
tree753d1edddce0216e6ca00f0560dee0e6a4dfd673
parent7b133e074c5912cf058dc545a3e14469d74b6644 (diff)
parente926bf65076cb5c8da6bf8f32635f696de5ff9aa (diff)
downloadphp-git-fcd4c34cb3c32b55c2cbe2b5e8c784e5b2c0873e.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0: Fixes #65689. PDO_Firebrid / exec() does not free allocated statement.
-rw-r--r--ext/pdo_firebird/firebird_driver.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/ext/pdo_firebird/firebird_driver.c b/ext/pdo_firebird/firebird_driver.c
index b26939ccd2..91cd3593ea 100644
--- a/ext/pdo_firebird/firebird_driver.c
+++ b/ext/pdo_firebird/firebird_driver.c
@@ -238,14 +238,16 @@ static zend_long firebird_handle_doer(pdo_dbh_t *dbh, const char *sql, size_t sq
/* execute the statement */
if (isc_dsql_execute2(H->isc_status, &H->tr, &stmt, PDO_FB_SQLDA_VERSION, &in_sqlda, &out_sqlda)) {
RECORD_ERROR(dbh);
- return -1;
+ ret = -1;
+ goto free_statement;
}
/* find out how many rows were affected */
if (isc_dsql_sql_info(H->isc_status, &stmt, sizeof(info_count), const_cast(info_count),
sizeof(result), result)) {
RECORD_ERROR(dbh);
- return -1;
+ ret = -1;
+ goto free_statement;
}
if (result[0] == isc_info_sql_records) {
@@ -265,6 +267,12 @@ static zend_long firebird_handle_doer(pdo_dbh_t *dbh, const char *sql, size_t sq
RECORD_ERROR(dbh);
}
+free_statement:
+
+ if (isc_dsql_free_statement(H->isc_status, &stmt, DSQL_drop)) {
+ RECORD_ERROR(dbh);
+ }
+
return ret;
}
/* }}} */