Patch for "vacation" bug in Sieve handling.
[exim.git] / src / src / sieve.c
index 629c73b3fa1fb8e7168a6afd46618adcd52d8392..22bc64fd7a50ec9976fb86279b2c921357726b6e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/sieve.c,v 1.3 2004/12/21 09:40:01 ph10 Exp $ */
+/* $Cambridge: exim/src/src/sieve.c,v 1.6 2005/02/17 09:49:08 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -32,8 +32,7 @@
 /* The code is currently broken.                                    */
 #undef SUBADDRESS
 
-/* Define this for development of the vacation Sieve extension.     */
-/* The code is not yet finished.                                    */
+/* Define this for the vacation Sieve extension.                    */
 #define VACATION
 
 /* Must be >= 1                                                     */
@@ -2102,7 +2101,7 @@ if (*filter->pc=='{')
     }
   else
     {
-    filter->errmsg=CUS "missing closing brace";
+    filter->errmsg=CUS "expecting command or closing brace"; 
     return -1;
     }
   }
@@ -2487,6 +2486,7 @@ while (*filter->pc)
         start=capacity;
         once=string_cat(filter->vacation_directory,&capacity,&start,US"/",1);
         once=string_cat(once,&capacity,&start,hexdigest,33);
+        once[start] = '\0';
 
         /* process subject */
 
@@ -2542,10 +2542,13 @@ while (*filter->pc)
           capacity = 0;
           start = 0;
           addr->reply->headers = string_cat(NULL,&capacity,&start,reason.character,mime_body-reason.character);
+          addr->reply->headers[start] = '\0';
           capacity = 0;
           start = 0;
-          if (mime_body<reason_end) mime_body+=sizeof(nlnl)-1;
+          if (mime_body+(sizeof(nlnl)-1)<reason_end) mime_body+=sizeof(nlnl)-1;
+          else mime_body=reason_end-1;
           addr->reply->text = string_cat(NULL,&capacity,&start,mime_body,reason_end-mime_body);
+          addr->reply->text[start] = '\0';
           }
         else
           {