summaryrefslogtreecommitdiff
path: root/ext/pdo_firebird/firebird_statement.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2015-11-05 22:11:00 +0100
committerAnatol Belski <ab@php.net>2015-11-05 22:11:00 +0100
commitc1f893d894d00092aa839e236671a89948f5e431 (patch)
tree7b344540ca1138ebf86d766f75df7f83eebb71ee /ext/pdo_firebird/firebird_statement.c
parentcff9e16a124f84e8c03a7a4315c8e052db530d0c (diff)
downloadphp-git-c1f893d894d00092aa839e236671a89948f5e431.tar.gz
fix NULL deref in pdo_firebird
ref #70862
Diffstat (limited to 'ext/pdo_firebird/firebird_statement.c')
-rw-r--r--ext/pdo_firebird/firebird_statement.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/pdo_firebird/firebird_statement.c b/ext/pdo_firebird/firebird_statement.c
index 1e0151dc9d..5eaf530415 100644
--- a/ext/pdo_firebird/firebird_statement.c
+++ b/ext/pdo_firebird/firebird_statement.c
@@ -523,12 +523,13 @@ static int firebird_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_dat
}
if (Z_TYPE_P(parameter) == IS_RESOURCE) {
- php_stream *stm;
+ php_stream *stm = NULL;
php_stream_from_zval_no_verify(stm, parameter);
if (stm) {
+ zend_string *mem = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0);
zval_ptr_dtor(parameter);
- ZVAL_STR(parameter, php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0));
+ ZVAL_STR(parameter, mem ? mem : STR_EMPTY_ALLOC());
} else {
pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource");
return 0;