/* check whether the resulting localpart could be encoded as
quoted string */
for (p = parser->cur; p < dp; p++) {
- if (!smtp_char_is_qtext(*p) || *p == ' ') {
+ if (!smtp_char_is_qtext(*p) &&
+ !smtp_char_is_qpair(*p)) {
parser->error =
"Invalid character in user name";
return -1;
.address = { .localpart = "user@frop", .domain = "domain.tld" },
.output = "\"user@frop\"@domain.tld"
},
+ {
+ .input = "user frop@domain.tld",
+ .address = { .localpart = "user frop", .domain = "domain.tld" },
+ .output = "\"user frop\"@domain.tld"
+ },
+ {
+ .input = "user\"frop@domain.tld",
+ .address = { .localpart = "user\"frop", .domain = "domain.tld" },
+ .output = "\"user\\\"frop\"@domain.tld"
+ },
+ {
+ .input = "user\\frop@domain.tld",
+ .address = { .localpart = "user\\frop", .domain = "domain.tld" },
+ .output = "\"user\\\\frop\"@domain.tld"
+ },
{
.input = "user@127.0.0.1",
.address = { .localpart = "user", .domain = "127.0.0.1" },
.input = "frop@$%^$%^.tld",
},
{
- .input = "fr op@domain.tld",
- },
- {
- .input = "f r o p@domain.tld",
- },
+ .input = "fr\top@domain.tld",
+ }
};
unsigned int invalid_username_parse_test_count =