Fixed bug in which the static maildir was overwritted if a format string
authorJon Steinhart <jon@fourwinds.com>
Tue, 12 Oct 2004 20:38:10 +0000 (20:38 +0000)
committerJon Steinhart <jon@fourwinds.com>
Tue, 12 Oct 2004 20:38:10 +0000 (20:38 +0000)
was read from the profile.

uip/inc.c

index af8180d..02a2cbf 100644 (file)
--- a/uip/inc.c
+++ b/uip/inc.c
@@ -244,6 +244,7 @@ main (int argc, char **argv)
     struct stat st, s1;
     FILE *aud = NULL;
     char       b[MAXPATHLEN + 1];
+    char       *maildir_copy;          /* copy of mail directory because the static gets overwritten */
 
 #ifdef POP
     int nmsgs, nbytes, p = 0;
@@ -547,6 +548,9 @@ main (int argc, char **argv)
        folder = getfolder (0);
     maildir = m_maildir (folder);
 
+    if ((maildir_copy = strdup(maildir)) == (char *)0)
+        adios (maildir, "error allocating memory to copy maildir");
+
     if (stat (maildir, &st) == NOTOK) {
        if (errno != ENOENT)
            adios (maildir, "error on folder");
@@ -828,7 +832,7 @@ go_to_it:
                 *  Run the external program hook on the message.
                 */
 
-               (void)snprintf(b, sizeof (b), "%s/%d", maildir, msgnum + 1);
+               (void)snprintf(b, sizeof (b), "%s/%d", maildir_copy, msgnum + 1);
                (void)ext_hook("add-hook", b, (char *)0);
 
                if (aud)