change call to expand() to be more rational (and consistent!)
[unix-history] / usr / src / usr.sbin / sendmail / src / parseaddr.c
index 6469f14..f3fe77b 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)parseaddr.c        8.55 (Berkeley) %G%";
+static char sccsid[] = "@(#)parseaddr.c        8.58 (Berkeley) %G%";
 #endif /* not lint */
 
 #include "sendmail.h"
 #endif /* not lint */
 
 #include "sendmail.h"
@@ -435,7 +435,7 @@ prescan(addr, delim, pvpbuf, pvpbsize, delimptr)
                char obuf[50];
 
                firsttime = FALSE;
                char obuf[50];
 
                firsttime = FALSE;
-               expand("\201o", obuf, &obuf[sizeof obuf - sizeof DELIMCHARS], CurEnv);
+               expand("\201o", obuf, sizeof obuf - sizeof DELIMCHARS, CurEnv);
                strcat(obuf, DELIMCHARS);
                for (p = obuf; *p != '\0'; p++)
                {
                strcat(obuf, DELIMCHARS);
                for (p = obuf; *p != '\0'; p++)
                {
@@ -476,6 +476,8 @@ prescan(addr, delim, pvpbuf, pvpbsize, delimptr)
                                if (q >= &pvpbuf[pvpbsize - 5])
                                {
                                        usrerr("553 Address too long");
                                if (q >= &pvpbuf[pvpbsize - 5])
                                {
                                        usrerr("553 Address too long");
+                                       if (strlen(addr) > MAXNAME)
+                                               addr[MAXNAME] = '\0';
        returnnull:
                                        if (delimptr != NULL)
                                                *delimptr = p;
        returnnull:
                                        if (delimptr != NULL)
                                                *delimptr = p;
@@ -1579,7 +1581,7 @@ buildaddr(tv, a, flags, e)
        int spaceleft;
        static MAILER errormailer;
        static char *errorargv[] = { "ERROR", NULL };
        int spaceleft;
        static MAILER errormailer;
        static char *errorargv[] = { "ERROR", NULL };
-       static char buf[MAXNAME];
+       static char buf[MAXNAME + 1];
 
        if (tTd(24, 5))
        {
 
        if (tTd(24, 5))
        {
@@ -2030,8 +2032,8 @@ remotename(name, m, flags, pstat, e)
        char *fancy;
        char *oldg = macvalue('g', e);
        int rwset;
        char *fancy;
        char *oldg = macvalue('g', e);
        int rwset;
-       static char buf[MAXNAME];
-       char lbuf[MAXNAME];
+       static char buf[MAXNAME + 1];
+       char lbuf[MAXNAME + 1];
        char pvpbuf[PSBUFSIZE];
 
        if (tTd(12, 1))
        char pvpbuf[PSBUFSIZE];
 
        if (tTd(12, 1))
@@ -2119,9 +2121,9 @@ remotename(name, m, flags, pstat, e)
 
        /* need to make sure route-addrs have <angle brackets> */
        if (bitset(RF_CANONICAL, flags) && lbuf[0] == '@')
 
        /* need to make sure route-addrs have <angle brackets> */
        if (bitset(RF_CANONICAL, flags) && lbuf[0] == '@')
-               expand("<\201g>", buf, &buf[sizeof buf - 1], e);
+               expand("<\201g>", buf, sizeof buf, e);
        else
        else
-               expand(fancy, buf, &buf[sizeof buf - 1], e);
+               expand(fancy, buf, sizeof buf, e);
 
        define('g', oldg, e);
 
 
        define('g', oldg, e);