dba_insert returns true if key already exists

Bug #54242 dba_insert returns true if key already exists
Submitted: 2011-03-13 15:11 UTC Modified: 2011-03-13 15:53 UTC
From: marc-bennewitz at arcor dot de Assigned: felipe (profile)
Status: Closed Package: DBM/DBA related
PHP Version: 5.3.5 OS: Linux
Private report: No CVE-ID: None

 [2011-03-13 15:11 UTC] marc-bennewitz at arcor dot de

Description:
------------
dba_insert returns true if key already exists using handler 'flatfile'

Test script:
---------------
$path = __DIR__ . '/test.dba';
$mode = 'c';
$handler = 'flatfile';

@unlink($path);
$dba = dba_open($path, $mode, $handler);

// first insert success
var_dump(dba_insert('key', 'value', $dba));

// second insert failed -> already exists
var_dump(dba_insert('key', 'value', $dba));

Expected result:
----------------
bool(true)
PHP Warning:  dba_insert(key): Key already exists in /mnt/workspace/zf2/cache/tests/test_dba.php on line 15

Warning: dba_insert(key): Key already exists in /mnt/workspace/zf2/cache/tests/test_dba.php on line 15
bool(false)

Actual result:
--------------
bool(true)
PHP Warning:  dba_insert(key): Key already exists in /mnt/workspace/zf2/cache/tests/test_dba.php on line 15

Warning: dba_insert(key): Key already exists in /mnt/workspace/zf2/cache/tests/test_dba.php on line 15
bool(true)

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports

 [2011-03-13 15:23 UTC] felipe@php.net

-Status: Open +Status: Closed -Assigned To: +Assigned To: felipe

 [2011-03-13 15:23 UTC] felipe@php.net

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

The bug has been fixed in trunk, I'll merge it in 5.3 branch when the 5.3.6 got released.

Thanks.

 [2011-03-13 15:51 UTC] marc-bennewitz at arcor dot de

Much thanks for the very fast fix !

But on a little bit more tests I found similar problems with the 'inifile' handler -> returns true on second insert without a warning

PS: not tested the other handlers yet.