},
{
.input = "u\"ser",
- .flags = SMTP_ADDRESS_PARSE_FLAG_ALLOW_LOCALPART |
+ .flags = SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL |
+ SMTP_ADDRESS_PARSE_FLAG_ALLOW_LOCALPART |
SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
SMTP_ADDRESS_PARSE_FLAG_IGNORE_BROKEN,
.address = { .localpart = NULL, .domain = NULL,
},
{
.input = "user\"@domain.tld",
- .flags = SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
+ .flags = SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL |
+ SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
SMTP_ADDRESS_PARSE_FLAG_IGNORE_BROKEN,
.address = { .localpart = NULL, .domain = NULL,
.raw = "user\"@domain.tld" },
},
{
.input = "bla$die%bla@die&bla",
- .flags = SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
+ .flags = SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL |
+ SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
SMTP_ADDRESS_PARSE_FLAG_IGNORE_BROKEN,
.address = { .localpart = NULL, .domain = NULL,
.raw = "bla$die%bla@die&bla" },
},
{
.input = "/@)$@)BLAARGH!@#$$",
- .flags = SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
+ .flags = SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL |
+ SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
SMTP_ADDRESS_PARSE_FLAG_IGNORE_BROKEN,
.address = { .localpart = NULL, .domain = NULL,
.raw = "/@)$@)BLAARGH!@#$$" },
},
{
.input = "f\xc3\xb6\xc3\xa4@\xc3\xb6\xc3\xa4",
- .flags = SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
+ .flags = SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL |
+ SMTP_ADDRESS_PARSE_FLAG_PRESERVE_RAW |
SMTP_ADDRESS_PARSE_FLAG_IGNORE_BROKEN |
SMTP_ADDRESS_PARSE_FLAG_ALLOW_BAD_LOCALPART |
SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL,
.input = "@otherdomain.tld,@yetanotherdomain.tld:user@domain.tld",
.flags = SMTP_ADDRESS_PARSE_FLAG_BRACKETS_OPTIONAL
},
+ {
+ .input = "user@domain.tld",
+ .flags = SMTP_ADDRESS_PARSE_FLAG_IGNORE_BROKEN,
+ },
{
.input = "<>",
},
{
.input = "<@###domain.tld,@yetanotherdomain.tld.user@domain.tld>",
},
+ {
+ .input = "f\xc3\xb6\xc3\xa4@\xc3\xb6\xc3\xa4",
+ .flags = SMTP_ADDRESS_PARSE_FLAG_IGNORE_BROKEN,
+ }
};
unsigned int invalid_path_parse_test_count =
test_begin(t_strdup_printf("smtp path invalid [%d]", i));
test_out_reason(t_strdup_printf("parse(\"%s\")", test->input),
- ret < 0, error);
+ (ret < 0 && !smtp_address_is_broken(address)),
+ error);
test_end();
} T_END;
}