summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2016-02-29 15:38:42 +0100
committerAnatol Belski <ab@php.net>2016-02-29 15:38:42 +0100
commitd7fd614cc6149884bc29818d9467bc5bc269e81c (patch)
tree81eb07c68ccae8b45008b88b9d5b00d57f726246
parenta310c3b484051424c4545a00b731b78a4fff7982 (diff)
downloadphp-git-d7fd614cc6149884bc29818d9467bc5bc269e81c.tar.gz
fix leaks and add one more NULL check
-rw-r--r--ext/pdo_dblib/dblib_stmt.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/ext/pdo_dblib/dblib_stmt.c b/ext/pdo_dblib/dblib_stmt.c
index 387648244f..2830272b82 100644
--- a/ext/pdo_dblib/dblib_stmt.c
+++ b/ext/pdo_dblib/dblib_stmt.c
@@ -104,10 +104,16 @@ static int pdo_dblib_stmt_cursor_closer(pdo_stmt_t *stmt TSRMLS_DC)
dbcancel(H->link);
if (stmt->columns) {
+ int i = 0;
+ for (; i < stmt->column_count; i++) {
+ if (stmt->columns[i].name) {
+ efree(stmt->columns[i].name);
+ }
+ }
efree(stmt->columns);
stmt->columns = NULL;
}
-
+
return 1;
}
@@ -115,8 +121,16 @@ static int pdo_dblib_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
{
pdo_dblib_stmt *S = (pdo_dblib_stmt*)stmt->driver_data;
- efree(stmt->columns);
- stmt->columns = NULL;
+ if (stmt->columns) {
+ int i = 0;
+ for (; i < stmt->column_count; i++) {
+ if (stmt->columns[i].name) {
+ efree(stmt->columns[i].name);
+ }
+ }
+ efree(stmt->columns);
+ stmt->columns = NULL;
+ }
efree(S);