Check for overflow in numeric expansion conditions; forbid negative
[exim.git] / src / src / sieve.c
index 3b0199d49903e5be99f26944b8b8f2aaf6652f7d..425a0b9e0a4304ad17bea1f59f6e037b47bf34c7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/sieve.c,v 1.19 2006/03/08 11:13:07 ph10 Exp $ */
+/* $Cambridge: exim/src/src/sieve.c,v 1.22 2006/09/05 14:05:43 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -400,7 +400,7 @@ if (*uri=='?')
         return -1;
         }
       }
-    if (hname.length==2 && strcmp(hname.character,"to")==0)
+    if (hname.length==2 && strcmp(CS hname.character,"to")==0)
       {
       new=store_get(sizeof(string_item));
       new->text=store_get(hvalue.length+1);
@@ -409,7 +409,7 @@ if (*uri=='?')
       new->next=*recipient;
       *recipient=new;
       }
-    else if (hname.length==4 && strcmp(hname.character,"body")==0)
+    else if (hname.length==4 && strcmp(CS hname.character,"body")==0)
       *body=hvalue;
     if (*uri=='&') ++uri;
     else break;
@@ -2583,6 +2583,7 @@ while (*filter->pc)
           {
           debug_printf("Notification to `%s'.\n",method.character);
           }
+#ifndef COMPILE_SYNTAX_CHECKER
         if (exec)
           {
           string_item *p;
@@ -2606,6 +2607,7 @@ while (*filter->pc)
             (void)child_close(pid, 0);
             }
           }
+#endif
         }
       else
         {
@@ -2884,7 +2886,7 @@ while (*filter->pc)
             }
           else
             {
-            struct String qp;
+            struct String qp = { NULL, 0 };  /* Keep compiler happy (PH) */
 
             capacity = 0;
             start = reason.length;