From: Timo Sirainen Date: Mon, 27 Jun 2011 23:49:46 +0000 (+0300) Subject: lib-storage: Changed userdb +key=value to key+=value X-Git-Tag: 2.0.14~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7af5f78e9fee296e42430d94ef252ff0333d8024;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Changed userdb +key=value to key+=value --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 9067ea85aa..8cfe94380a 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -108,6 +108,7 @@ static int set_line(struct mail_storage_service_ctx *ctx, struct setting_parser_context *set_parser = user->set_parser; bool mail_debug; const char *key, *orig_key, *append_value = NULL; + unsigned int len; int ret; mail_debug = mail_user_set_get_mail_debug(user->user_info, @@ -116,9 +117,11 @@ static int set_line(struct mail_storage_service_ctx *ctx, line = t_strconcat(line, "=yes", NULL); orig_key = key = t_strcut(line, '='); - if (*key == '+') { - append_value = line + strlen(key) + 1; - key++; + len = strlen(key); + if (len > 0 && key[len-1] == '+') { + /* key+=value */ + append_value = line + len + 1; + key = t_strndup(key, len-1); line++; }