status of action wasn't saved for use by 'N' result, so when 'N' was
authorGlenn Burkhardt <glenn@aoi.ultranet.com>
Mon, 22 Sep 2003 00:43:09 +0000 (00:43 +0000)
committerGlenn Burkhardt <glenn@aoi.ultranet.com>
Mon, 22 Sep 2003 00:43:09 +0000 (00:43 +0000)
used slocal could perform the action even if the previous
action failed.  Debian bug report #149745, filed by Daniel Müller.

uip/slocal.c

index b176008..6bf3e15 100644 (file)
@@ -460,7 +460,7 @@ localmail (int fd, char *mdlvr)
 static int
 usr_delivery (int fd, char *delivery, int su)
 {
-    int i, accept, status, won, vecp, next;
+    int i, accept, status=1, won, vecp, next;
     char *field, *pattern, *action, *result, *string;
     char buffer[BUFSIZ], tmpbuf[BUFSIZ];
     char *cp, *vec[NVEC];
@@ -664,6 +664,8 @@ usr_delivery (int fd, char *delivery, int su)
                break;
        }
 
+       if (status) next = 0;   /* action failed, mark for 'N' result */
+
        if (accept && status == 0)
            won++;
     }