From ca4d25b9bd7c3038c5421cdae705c51f68657351 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Tue, 29 Oct 2013 21:45:13 +0100 Subject: [PATCH] correctly unfold RFC822 Headers and find the right end of the string. --- citadel/internet_addressing.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/citadel/internet_addressing.c b/citadel/internet_addressing.c index 507347307..907d0eaac 100644 --- a/citadel/internet_addressing.c +++ b/citadel/internet_addressing.c @@ -989,11 +989,17 @@ void unfold_rfc822_field(char **field, char **FieldEnd) sField < pFieldEnd; pField++, sField++) { - if ((*sField=='\r') || (*sField=='\n')) { - sField++; - if (*sField == '\n') - sField++; - *pField = *sField; + if ((*sField=='\r') || (*sField=='\n')) + { + int offset = 1; + + if (*(sField+1) == '\n') + offset++; + + if (sField + offset == pFieldEnd) + break; + + *pField = *sField + offset; } else { if (*sField=='\"') quote = 1 - quote; -- 2.30.2