summaryrefslogtreecommitdiff
path: root/ext/dba/libinifile
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2008-11-13 18:21:40 +0000
committerIlia Alshanetsky <iliaa@php.net>2008-11-13 18:21:40 +0000
commit9c9b5b39256b54a64412d6f5ff5c780f70feec2e (patch)
tree51a4f2523eaada94c4c1e767adf1935d2b2d986a /ext/dba/libinifile
parentc29ebd8a23cf1127d6b0d42fd2cc604834d3b84e (diff)
downloadphp-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.c4
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) {