From 72d964c69e9d9b1143d5d205c28f53c2146e0df6 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Sat, 19 Nov 2016 01:14:18 +0100 Subject: [PATCH] lib-sieve: sieve-message: Fixed trimming of empty header. --- src/lib-sieve/sieve-message.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c index 4e333b80c..ca9fde233 100644 --- a/src/lib-sieve/sieve-message.c +++ b/src/lib-sieve/sieve-message.c @@ -553,14 +553,18 @@ struct sieve_header_list *sieve_message_header_list_create static inline string_t *_header_right_trim(const char *raw) { string_t *result; - int i; + const char *p, *pend; - for ( i = strlen(raw)-1; i >= 0; i-- ) { - if ( raw[i] != ' ' && raw[i] != '\t' ) break; + pend = raw + strlen(raw); + if (raw == pend) { + result = t_str_new(1); + } else { + for ( p = pend-1; p >= raw; p-- ) { + if ( *p != ' ' && *p != '\t' ) break; + } + result = t_str_new(p - raw + 1); + str_append_n(result, raw, p - raw + 1); } - - result = t_str_new(i+1); - str_append_n(result, raw, i + 1); return result; }