diff options
Diffstat (limited to 'contrib/sendmail/src/recipient.c')
-rw-r--r-- | contrib/sendmail/src/recipient.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/contrib/sendmail/src/recipient.c b/contrib/sendmail/src/recipient.c index 186c8b6..7452897 100644 --- a/contrib/sendmail/src/recipient.c +++ b/contrib/sendmail/src/recipient.c @@ -13,7 +13,7 @@ #include <sendmail.h> -SM_RCSID("@(#)$Id: recipient.c,v 8.330.2.1 2002/08/27 20:21:02 gshapiro Exp $") +SM_RCSID("@(#)$Id: recipient.c,v 8.330.2.2 2003/09/16 19:56:25 ca Exp $") static void includetimeout __P((void)); static ADDRESS *self_reference __P((ADDRESS *)); @@ -169,6 +169,7 @@ sendtolist(list, ctladdr, sendq, aliaslevel, e) SM_NONVOLATILE char delimiter; /* the address delimiter */ SM_NONVOLATILE int naddrs; SM_NONVOLATILE int i; + char *endp; char *oldto = e->e_to; char *SM_NONVOLATILE bufp; char buf[MAXNAME + 1]; @@ -206,6 +207,7 @@ sendtolist(list, ctladdr, sendq, aliaslevel, e) } else bufp = sm_malloc_x(i); + endp = bufp + i; SM_TRY { @@ -217,12 +219,16 @@ sendtolist(list, ctladdr, sendq, aliaslevel, e) auto char *delimptr; register ADDRESS *a; + SM_ASSERT(p < endp); + /* parse the address */ while ((isascii(*p) && isspace(*p)) || *p == ',') p++; + SM_ASSERT(p < endp); a = parseaddr(p, NULLADDR, RF_COPYALL, delimiter, &delimptr, e, true); p = delimptr; + SM_ASSERT(p < endp); if (a == NULL) continue; a->q_next = al; |