summaryrefslogtreecommitdiff
path: root/src/parseaddr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parseaddr.c')
-rw-r--r--src/parseaddr.c44
1 files changed, 32 insertions, 12 deletions
diff --git a/src/parseaddr.c b/src/parseaddr.c
index f73a2688309f..63f7d73c89de 100644
--- a/src/parseaddr.c
+++ b/src/parseaddr.c
@@ -89,7 +89,7 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt)
#if _FFR_8BITENVADDR
if (bitset(RF_IS_EXT, flags) && addr != NULL)
{
- int len = 0;
+ int len;
addr = quote_internal_chars(addr, NULL, &len, NULL);
}
@@ -155,8 +155,9 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt)
a = buildaddr(pvp, a, flags, e);
#if _FFR_8BITENVADDR
+ if (NULL != a->q_user)
{
- int len = 0;
+ int len;
a->q_user = quote_internal_chars(a->q_user, NULL, &len, e->e_rpool); /* EAI: ok */
}
@@ -267,7 +268,7 @@ parseaddr(addr, a, flags, delim, delimptr, e, isrcpt)
** isrcpt -- true iff the address is for a recipient.
**
** Returns:
-** true -- if the address has characters that are reservered
+** true -- if the address has characters that are reserved
** for macros or is too long.
** false -- otherwise.
*/
@@ -398,7 +399,7 @@ hasctrlchar(addr, isrcpt, complain)
break;
}
}
- if (!SMTPUTF8 && !EightBitAddrOK && (*addr & 0340) == 0200)
+ if (!SMTP_UTF8 && !EightBitAddrOK && (*addr & 0340) == 0200)
{
setstat(EX_USAGE);
result = "8-bit character";
@@ -447,7 +448,7 @@ allocaddr(a, flags, paddr, e)
ENVELOPE *e;
{
if (tTd(24, 4))
- sm_dprintf("allocaddr(flags=%x, paddr=%s, ad=%d)\n", flags, paddr, bitset(EF_SECURE, e->e_flags));
+ sm_dprintf("allocaddr: flags=%x, paddr=%s, ad=%d\n", flags, paddr, bitset(EF_SECURE, e->e_flags));
a->q_paddr = paddr;
@@ -688,7 +689,6 @@ unsigned char TokTypeNoC[256] =
ATM,ATM,ATM,ATM,ATM,ATM,ATM,ATM, ATM,ATM,ATM,ATM,ATM,ATM,ATM,ONE
};
-
#define NOCHAR (-1) /* signal nothing in lookahead token */
char **
@@ -2015,6 +2015,9 @@ buildaddr(tv, a, flags, e)
char **hostp;
char hbuf[MAXNAME + 1]; /* EAI:ok */
static char ubuf[MAXNAME_I + 2];
+#if _FFR_8BITENVADDR
+ int len;
+#endif
if (tTd(24, 5))
{
@@ -2211,7 +2214,12 @@ badaddr:
}
/* rewrite according recipient mailer rewriting rules */
- macdefine(&e->e_macro, A_PERM, 'h', a->q_host);
+#if _FFR_8BITENVADDR
+ p = quote_internal_chars(a->q_host, NULL, &len, NULL);
+#else
+ p = a->q_host;
+#endif
+ macdefine(&e->e_macro, A_PERM, 'h', p);
if (ConfigLevel >= 10 ||
!bitset(RF_SENDERADDR|RF_HEADERADDR, flags))
@@ -2477,7 +2485,6 @@ static struct qflags AddressFlags[] =
{ "QEXPANDED", QEXPANDED },
{ "QDELIVERED", QDELIVERED },
{ "QDELAYED", QDELAYED },
- { "QTHISPASS", QTHISPASS },
{ "QALIAS", QALIAS },
{ "QBYTRACE", QBYTRACE },
{ "QBYNDELAY", QBYNDELAY },
@@ -2485,9 +2492,11 @@ static struct qflags AddressFlags[] =
{ "QINTBCC", QINTBCC },
{ "QDYNMAILER", QDYNMAILER },
{ "QSECURE", QSECURE },
+ { "QQUEUED", QQUEUED },
+ { "QINTREPLY", QINTREPLY },
+ { "QMXSECURE", QMXSECURE },
{ "QTHISPASS", QTHISPASS },
{ "QRCPTOK", QRCPTOK },
- { "QQUEUED", QQUEUED },
{ NULL, 0 }
};
@@ -2880,7 +2889,11 @@ maplocaluser(a, sendq, aliaslevel, e)
{
register char **pvp;
register ADDRESS *SM_NONVOLATILE a1 = NULL;
+ char *p;
char pvpbuf[PSBUFSIZE];
+#if _FFR_8BITENVADDR
+ int len;
+#endif
if (tTd(29, 1))
{
@@ -2897,7 +2910,12 @@ maplocaluser(a, sendq, aliaslevel, e)
return;
}
- macdefine(&e->e_macro, A_PERM, 'h', a->q_host);
+#if _FFR_8BITENVADDR
+ p = quote_internal_chars(a->q_host, NULL, &len, NULL);
+#else
+ p = a->q_host;
+#endif
+ macdefine(&e->e_macro, A_PERM, 'h', p);
macdefine(&e->e_macro, A_PERM, 'u', a->q_user);
macdefine(&e->e_macro, A_PERM, 'z', a->q_home);
@@ -3321,8 +3339,10 @@ rscheck(rwset, p1, p2, e, flags, logl, host, logid, addr, addrstr)
rwset, p1, lbuf, ubuf);
else
sm_syslog(LOG_NOTICE, logid,
- "ruleset=%s, arg1=%s%s, reject=%s",
- rwset, p1, lbuf, MsgBuf);
+ "ruleset=%s, arg1=%s%s, %s=%s",
+ rwset, p1, lbuf,
+ bitset(RSF_STATUS, flags) ? "status" : "reject",
+ MsgBuf);
}
finis: ;