correctly unfold RFC822 Headers and find the right end of the string.
authorWilfried Goesgens <dothebart@citadel.org>
Tue, 29 Oct 2013 20:45:13 +0000 (21:45 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Tue, 29 Oct 2013 20:45:13 +0000 (21:45 +0100)
citadel/internet_addressing.c

index 507347307553f679dbdcb9994ddfd077d293593f..907d0eaac61719709fed8f5a7fcfbd00637d4bb0 100644 (file)
@@ -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;