diff --git a/src/lib-sieve/sieve-lexer.c b/src/lib-sieve/sieve-lexer.c index e66c358975f09fa965fd47d20ee957b3f7dcbd6c..4021da440c9d28fdbb9b57208633da674e10cd7a 100644 --- a/src/lib-sieve/sieve-lexer.c +++ b/src/lib-sieve/sieve-lexer.c @@ -691,6 +691,8 @@ static bool sieve_lexer_scan_raw_token(struct sieve_lexer *lexer) if ( sieve_lexer_curchar(lexer) == '\n' ) { sieve_lexer_shift(lexer); + /* End of multi-line string */ + /* Check whether length limit was violated */ if ( str_len(str) > SIEVE_MAX_STRING_LEN ) { sieve_lexer_error(lexer, @@ -708,15 +710,15 @@ static bool sieve_lexer_scan_raw_token(struct sieve_lexer *lexer) sieve_lexer_error(lexer, "found stray carriage-return (CR) character " "in multi-line string started at line %d", start_line); - lexer->token_type = STT_ERROR; - return FALSE; + lexer->token_type = STT_ERROR; + return FALSE; } /* Handle dot-stuffing */ if ( str_len(str) <= SIEVE_MAX_STRING_LEN ) str_append_c(str, '.'); - if ( sieve_lexer_curchar(lexer) == '.' ) - sieve_lexer_shift(lexer); + if ( sieve_lexer_curchar(lexer) == '.' ) + sieve_lexer_shift(lexer); } /* Scan the rest of the line */