summaryrefslogtreecommitdiff
path: root/ext/dba
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2009-05-13 02:14:53 +0000
committerFelipe Pena <felipe@php.net>2009-05-13 02:14:53 +0000
commit539b7a2154b9db710447ef0696c80843d303584b (patch)
tree8178c3c05a575aaf75da147e115b13ca2ea19d61 /ext/dba
parentc25b0a281724d9a211432844aaed58dbe76997bb (diff)
downloadphp-git-539b7a2154b9db710447ef0696c80843d303584b.tar.gz
- MFH: Fixed bug #48240 (DBA Segmentation fault dba_nextkey)
Diffstat (limited to 'ext/dba')
-rw-r--r--ext/dba/dba_db4.c2
-rw-r--r--ext/dba/tests/bug48240.phpt25
2 files changed, 26 insertions, 1 deletions
diff --git a/ext/dba/dba_db4.c b/ext/dba/dba_db4.c
index 8e14339711..bcec74a01b 100644
--- a/ext/dba/dba_db4.c
+++ b/ext/dba/dba_db4.c
@@ -219,7 +219,7 @@ DBA_NEXTKEY_FUNC(db4)
gkey.flags |= DB_DBT_MALLOC;
gval.flags |= DB_DBT_MALLOC;
}
- if (dba->cursor->c_get(dba->cursor, &gkey, &gval, DB_NEXT) == 0) {
+ if (dba->cursor && dba->cursor->c_get(dba->cursor, &gkey, &gval, DB_NEXT) == 0) {
if (gkey.data) {
nkey = estrndup(gkey.data, gkey.size);
if (newlen) *newlen = gkey.size;
diff --git a/ext/dba/tests/bug48240.phpt b/ext/dba/tests/bug48240.phpt
new file mode 100644
index 0000000000..72dc439564
--- /dev/null
+++ b/ext/dba/tests/bug48240.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #48240 (DBA Segmentation fault dba_nextkey)
+--SKIPIF--
+<?php
+ $handler = 'db4';
+ require_once('skipif.inc');
+?>
+--FILE--
+<?php
+
+$handler = 'db4';
+require_once('test.inc');
+
+$db = dba_open($db_filename, 'c', 'db4');
+
+var_dump(dba_nextkey($db));
+
+dba_close($db);
+unlink($db_filename);
+
+?>
+===DONE===
+--EXPECT--
+bool(false)
+===DONE===