try to make sure that path-addrs always have <angle brackets>
authorEric Allman <eric@ucbvax.Berkeley.EDU>
Thu, 6 Jan 1994 01:20:11 +0000 (17:20 -0800)
committerEric Allman <eric@ucbvax.Berkeley.EDU>
Thu, 6 Jan 1994 01:20:11 +0000 (17:20 -0800)
SCCS-vsn: usr.sbin/sendmail/src/parseaddr.c 8.29
SCCS-vsn: usr.sbin/sendmail/src/usersmtp.c 8.17

usr/src/usr.sbin/sendmail/src/parseaddr.c
usr/src/usr.sbin/sendmail/src/usersmtp.c

index 0af8bb6..6800d55 100644 (file)
@@ -2048,7 +2048,13 @@ remotename(name, m, flags, pstat, e)
 
        cataddr(pvp, NULL, lbuf, sizeof lbuf, '\0');
        define('g', lbuf, e);
 
        cataddr(pvp, NULL, lbuf, sizeof lbuf, '\0');
        define('g', lbuf, e);
-       expand(fancy, buf, &buf[sizeof buf - 1], e);
+
+       /* need to make sure route-addrs have <angle brackets> */
+       if (bitset(RF_CANONICAL, flags) && lbuf[0] == '@')
+               expand("<\201g>", buf, &buf[sizeof buf - 1], e);
+       else
+               expand(fancy, buf, &buf[sizeof buf - 1], e);
+
        define('g', oldg, e);
 
        if (tTd(12, 1))
        define('g', oldg, e);
 
        if (tTd(12, 1))
index c5c6ee7..42262d4 100644 (file)
@@ -10,9 +10,9 @@
 
 #ifndef lint
 #ifdef SMTP
 
 #ifndef lint
 #ifdef SMTP
-static char sccsid[] = "@(#)usersmtp.c 8.16 (Berkeley) %G% (with SMTP)";
+static char sccsid[] = "@(#)usersmtp.c 8.17 (Berkeley) %G% (with SMTP)";
 #else
 #else
-static char sccsid[] = "@(#)usersmtp.c 8.16 (Berkeley) %G% (without SMTP)";
+static char sccsid[] = "@(#)usersmtp.c 8.17 (Berkeley) %G% (without SMTP)";
 #endif
 #endif /* not lint */
 
 #endif
 #endif /* not lint */
 
@@ -296,6 +296,7 @@ smtpmailfrom(m, mci, e)
        ENVELOPE *e;
 {
        int r;
        ENVELOPE *e;
 {
        int r;
+       char *bufp;
        char buf[MAXNAME];
        char optbuf[MAXLINE];
 
        char buf[MAXNAME];
        char optbuf[MAXLINE];
 
@@ -328,15 +329,25 @@ smtpmailfrom(m, mci, e)
                (void) strcpy(buf, "");
        else
                expand("\201g", buf, &buf[sizeof buf - 1], e);
                (void) strcpy(buf, "");
        else
                expand("\201g", buf, &buf[sizeof buf - 1], e);
+       if (buf[0] == '<')
+       {
+               /* strip off <angle brackets> (put back on below) */
+               bufp = &buf[strlen(buf) - 1];
+               if (*bufp == '>')
+                       *bufp = '\0';
+               bufp = &buf[1];
+       }
+       else
+               bufp = buf;
        if (e->e_from.q_mailer == LocalMailer ||
            !bitnset(M_FROMPATH, m->m_flags))
        {
        if (e->e_from.q_mailer == LocalMailer ||
            !bitnset(M_FROMPATH, m->m_flags))
        {
-               smtpmessage("MAIL From:<%s>%s", m, mci, buf, optbuf);
+               smtpmessage("MAIL From:<%s>%s", m, mci, bufp, optbuf);
        }
        else
        {
                smtpmessage("MAIL From:<@%s%c%s>%s", m, mci, MyHostName,
        }
        else
        {
                smtpmessage("MAIL From:<@%s%c%s>%s", m, mci, MyHostName,
-                       buf[0] == '@' ? ',' : ':', buf, optbuf);
+                       *bufp == '@' ? ',' : ':', bufp, optbuf);
        }
        SmtpPhase = mci->mci_phase = "client MAIL";
        setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
        }
        SmtpPhase = mci->mci_phase = "client MAIL";
        setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);