summaryrefslogtreecommitdiff
path: root/ext/pdo
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2008-05-14 12:32:21 +0000
committerFelipe Pena <felipe@php.net>2008-05-14 12:32:21 +0000
commitf6cc283d46a3ea162add0b8586cb62cbbb615c81 (patch)
treedd14be50a6d115a6f391bc5c74109e592d3a8e80 /ext/pdo
parent7d4dfa8ee42105a1248c2189a88435ab5fdfc520 (diff)
downloadphp-git-f6cc283d46a3ea162add0b8586cb62cbbb615c81.tar.gz
- MFH: Add check for avoid segfault when trying instantiate PDORow manually
Diffstat (limited to 'ext/pdo')
-rwxr-xr-xext/pdo/pdo_stmt.c10
-rw-r--r--ext/pdo/tests/pdorow.phpt10
2 files changed, 16 insertions, 4 deletions
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c
index 43656b6f11..d13bf3b420 100755
--- a/ext/pdo/pdo_stmt.c
+++ b/ext/pdo/pdo_stmt.c
@@ -2715,10 +2715,12 @@ zend_object_handlers pdo_row_object_handlers = {
void pdo_row_free_storage(pdo_stmt_t *stmt TSRMLS_DC)
{
- ZVAL_NULL(&stmt->lazy_object_ref);
-
- if (--stmt->refcount == 0) {
- free_statement(stmt TSRMLS_CC);
+ if (stmt) {
+ ZVAL_NULL(&stmt->lazy_object_ref);
+
+ if (--stmt->refcount == 0) {
+ free_statement(stmt TSRMLS_CC);
+ }
}
}
diff --git a/ext/pdo/tests/pdorow.phpt b/ext/pdo/tests/pdorow.phpt
new file mode 100644
index 0000000000..b33dd155d8
--- /dev/null
+++ b/ext/pdo/tests/pdorow.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Trying instantiate a PDORow object manually
+--FILE--
+<?php
+
+new PDORow;
+
+?>
+--EXPECTF--
+Fatal error: PDORow::__construct(): You should not create a PDOStatement manually in %s on line %d