From 4a299840cdb51f61f8d1ebc0210b19c40dfbc1cc Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 17 May 2019 10:39:25 +0300 Subject: [PATCH 2/2] lib-managesieve: Make sure str_unescape() won't be writing past allocated memory The previous commit should already prevent this, but this makes sure it can't become broken in the future either. It makes the performance a tiny bit worse, but that's not practically noticeable. --- src/lib-managesieve/managesieve-parser.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib-managesieve/managesieve-parser.c b/src/lib-managesieve/managesieve-parser.c index f5f9d323..dc7d1fa9 100644 --- a/src/lib-managesieve/managesieve-parser.c +++ b/src/lib-managesieve/managesieve-parser.c @@ -169,10 +169,8 @@ static void managesieve_parser_save_arg(struct managesieve_parser *parser, /* remove the escapes */ if (parser->str_first_escape >= 0 && - (parser->flags & MANAGESIEVE_PARSE_FLAG_NO_UNESCAPE) == 0) { - /* -1 because we skipped the '"' prefix */ - str_unescape(str + parser->str_first_escape-1); - } + (parser->flags & MANAGESIEVE_PARSE_FLAG_NO_UNESCAPE) == 0) + (void)str_unescape(str); arg->_data.str = str; arg->str_len = strlen(str); -- 2.11.0