diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2008-11-13 18:21:40 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2008-11-13 18:21:40 +0000 |
commit | 9c9b5b39256b54a64412d6f5ff5c780f70feec2e (patch) | |
tree | 51a4f2523eaada94c4c1e767adf1935d2b2d986a /ext/dba/libinifile | |
parent | c29ebd8a23cf1127d6b0d42fd2cc604834d3b84e (diff) | |
download | php-git-9c9b5b39256b54a64412d6f5ff5c780f70feec2e.tar.gz |
Fixed a bug inside dba_replace() that could cause file truncation with
invalid keys
Diffstat (limited to 'ext/dba/libinifile')
-rw-r--r-- | ext/dba/libinifile/inifile.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/dba/libinifile/inifile.c b/ext/dba/libinifile/inifile.c index 237ec57386..e5b2940a48 100644 --- a/ext/dba/libinifile/inifile.c +++ b/ext/dba/libinifile/inifile.c @@ -508,7 +508,9 @@ static int inifile_delete_replace_append(inifile *dba, const key_type *key, cons /* 5 */ if (ret == SUCCESS) { - ret = inifile_truncate(dba, append ? pos_grp_next : pos_grp_start TSRMLS_CC); /* writes error on fail */ + if (!value || (key->name && strlen(key->name))) { + ret = inifile_truncate(dba, append ? pos_grp_next : pos_grp_start TSRMLS_CC); /* writes error on fail */ + } } if (ret == SUCCESS) { |