projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixes for problems causing mail to be both sent and rejected
[unix-history]
/
usr
/
src
/
usr.sbin
/
sendmail
/
src
/
parseaddr.c
diff --git
a/usr/src/usr.sbin/sendmail/src/parseaddr.c
b/usr/src/usr.sbin/sendmail/src/parseaddr.c
index
56628d3
..
8d11206
100644
(file)
--- a/
usr/src/usr.sbin/sendmail/src/parseaddr.c
+++ b/
usr/src/usr.sbin/sendmail/src/parseaddr.c
@@
-7,7
+7,7
@@
*/
#ifndef lint
*/
#ifndef lint
-static char sccsid[] = "@(#)parseaddr.c 6.
49
(Berkeley) %G%";
+static char sccsid[] = "@(#)parseaddr.c 6.
50
(Berkeley) %G%";
#endif /* not lint */
#include "sendmail.h"
#endif /* not lint */
#include "sendmail.h"
@@
-247,9
+247,11
@@
allocaddr(a, copyf, paddr, delimptr)
{
char savec = *delimptr;
{
char savec = *delimptr;
- *delimptr = '\0';
+ if (savec != '\0')
+ *delimptr = '\0';
a->q_paddr = newstr(paddr);
a->q_paddr = newstr(paddr);
- *delimptr = savec;
+ if (savec != '\0')
+ *delimptr = savec;
}
else
a->q_paddr = paddr;
}
else
a->q_paddr = paddr;
@@
-383,6
+385,7
@@
prescan(addr, delim, pvpbuf, delimptr)
char *tok;
int state;
int newstate;
char *tok;
int state;
int newstate;
+ char *saveto = CurEnv->e_to;
static char *av[MAXATOM+1];
/* make sure error messages don't have garbage on them */
static char *av[MAXATOM+1];
/* make sure error messages don't have garbage on them */
@@
-396,6
+399,7
@@
prescan(addr, delim, pvpbuf, delimptr)
state = ATM;
c = NOCHAR;
p = addr;
state = ATM;
c = NOCHAR;
p = addr;
+ CurEnv->e_to = p;
if (tTd(22, 11))
{
printf("prescan: ");
if (tTd(22, 11))
{
printf("prescan: ");
@@
-418,6
+422,7
@@
prescan(addr, delim, pvpbuf, delimptr)
usrerr("553 Address too long");
if (delimptr != NULL)
*delimptr = p;
usrerr("553 Address too long");
if (delimptr != NULL)
*delimptr = p;
+ CurEnv->e_to = saveto;
return (NULL);
}
return (NULL);
}
@@
-496,6
+501,7
@@
prescan(addr, delim, pvpbuf, delimptr)
usrerr("553 Unbalanced ')'");
if (delimptr != NULL)
*delimptr = p;
usrerr("553 Unbalanced ')'");
if (delimptr != NULL)
*delimptr = p;
+ CurEnv->e_to = saveto;
return (NULL);
}
else
return (NULL);
}
else
@@
-512,6
+518,7
@@
prescan(addr, delim, pvpbuf, delimptr)
usrerr("553 Unbalanced '>'");
if (delimptr != NULL)
*delimptr = p;
usrerr("553 Unbalanced '>'");
if (delimptr != NULL)
*delimptr = p;
+ CurEnv->e_to = saveto;
return (NULL);
}
anglecnt--;
return (NULL);
}
anglecnt--;
@@
-565,6
+572,7
@@
prescan(addr, delim, pvpbuf, delimptr)
syserr("553 prescan: too many tokens");
if (delimptr != NULL)
*delimptr = p;
syserr("553 prescan: too many tokens");
if (delimptr != NULL)
*delimptr = p;
+ CurEnv->e_to = saveto;
return (NULL);
}
*avp++ = tok;
return (NULL);
}
*avp++ = tok;
@@
-579,6
+587,7
@@
prescan(addr, delim, pvpbuf, delimptr)
printf("prescan==>");
printav(av);
}
printf("prescan==>");
printav(av);
}
+ CurEnv->e_to = saveto;
if (av[0] == NULL)
return (NULL);
return (av);
if (av[0] == NULL)
return (NULL);
return (av);