mirror of
https://github.com/php/php-src.git
synced 2026-03-27 01:32:22 +01:00
- Fixed Bug #38698 for some keys cdbmake creates corrupted db and cdb can't read valid db
This commit is contained in:
@@ -68,10 +68,11 @@ static int cdb_match(struct cdb *c, char *key, unsigned int len, uint32 pos TSRM
|
||||
uint32 cdb_hash(char *buf, unsigned int len)
|
||||
{
|
||||
uint32 h;
|
||||
const unsigned char * b = buf;
|
||||
|
||||
h = CDB_HASHSTART;
|
||||
while (len--) {
|
||||
h = ( h + (h << 5)) ^ (*buf++);
|
||||
h = ( h + (h << 5)) ^ (*b++);
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
26
ext/dba/tests/bug38698.phpt
Executable file
26
ext/dba/tests/bug38698.phpt
Executable file
@@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
Bug #38698 (Bug #38698 for some keys cdbmake creates corrupted db and cdb can't read valid db)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
$handler = 'cdb_make';
|
||||
require_once('skipif.inc');
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$db_file = '129php.cdb';
|
||||
|
||||
if (($db_make=dba_open($db_file, "n", 'cdb_make'))!==FALSE) {
|
||||
dba_insert(pack('i',129), "Booo!", $db_make);
|
||||
dba_close($db_make);
|
||||
// write md5 checksum of generated database file
|
||||
var_dump(md5_file($db_file));
|
||||
@unlink($db_file);
|
||||
} else {
|
||||
echo "Error creating database\n";
|
||||
}
|
||||
?>
|
||||
===DONE===
|
||||
--EXPECTF--
|
||||
string(32) "1f34b74bde3744265acfc21e0f30af95"
|
||||
===DONE===
|
||||
Reference in New Issue
Block a user