1
0
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:
Marcus Boerger
2006-11-01 00:11:49 +00:00
parent d9c61f95c6
commit ce37a5bb2c
2 changed files with 28 additions and 1 deletions

View File

@@ -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
View 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===