|
1 | | -/* $OpenBSD: smtp_session.c,v 1.421 2020/01/08 00:05:38 gilles Exp $ */ |
| 1 | +/* $OpenBSD: smtp_session.c,v 1.422 2020/01/28 21:35:00 gilles Exp $ */ |
2 | 2 |
|
3 | 3 | /* |
4 | 4 | * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org> |
@@ -2236,25 +2236,23 @@ smtp_mailaddr(struct mailaddr *maddr, char *line, int mailfrom, char **args, |
2236 | 2236 | memmove(maddr->user, p, strlen(p) + 1); |
2237 | 2237 | } |
2238 | 2238 |
|
2239 | | - if (!valid_localpart(maddr->user) || |
2240 | | - !valid_domainpart(maddr->domain)) { |
2241 | | - /* accept empty return-path in MAIL FROM, required for bounces */ |
2242 | | - if (mailfrom && maddr->user[0] == '\0' && maddr->domain[0] == '\0') |
2243 | | - return (1); |
| 2239 | + /* accept empty return-path in MAIL FROM, required for bounces */ |
| 2240 | + if (mailfrom && maddr->user[0] == '\0' && maddr->domain[0] == '\0') |
| 2241 | + return (1); |
2244 | 2242 |
|
2245 | | - /* no user-part, reject */ |
2246 | | - if (maddr->user[0] == '\0') |
2247 | | - return (0); |
2248 | | - |
2249 | | - /* no domain, local user */ |
2250 | | - if (maddr->domain[0] == '\0') { |
2251 | | - (void)strlcpy(maddr->domain, domain, |
2252 | | - sizeof(maddr->domain)); |
2253 | | - return (1); |
2254 | | - } |
| 2243 | + /* no or invalid user-part, reject */ |
| 2244 | + if (maddr->user[0] == '\0' || !valid_localpart(maddr->user)) |
2255 | 2245 | return (0); |
| 2246 | + |
| 2247 | + /* no domain part, local user */ |
| 2248 | + if (maddr->domain[0] == '\0') { |
| 2249 | + (void)strlcpy(maddr->domain, domain, |
| 2250 | + sizeof(maddr->domain)); |
2256 | 2251 | } |
2257 | 2252 |
|
| 2253 | + if (!valid_domainpart(maddr->domain)) |
| 2254 | + return (0); |
| 2255 | + |
2258 | 2256 | return (1); |
2259 | 2257 | } |
2260 | 2258 |
|
|
0 commit comments