summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKartikaya Gupta <kgupta@mozilla.com>2016-06-06 21:34:57 -0400
committerKartikaya Gupta <kgupta@mozilla.com>2016-06-08 08:39:15 -0400
commitbdf19c2739bfce263daafbf4df50d375f84d13b7 (patch)
treed5ad1c267d76ca2fdcbcd7ef4efb6ad46b51e9d7
parent9e679d454a313af6e8127994e24de1c072fced51 (diff)
Allow tab characters in header value overhangs
-rw-r--r--src/lib.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 229e226..3dd4d23 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -252,7 +252,7 @@ pub fn parse_header(raw_data: &[u8]) -> Result<(MailHeader, usize), MailParseErr
}
}
HeaderParseState::ValueNewline => {
- if c == b' ' {
+ if c == b' ' || c == b'\t' {
state = HeaderParseState::Value;
continue;
} else {
@@ -368,6 +368,11 @@ mod tests {
assert_eq!(parsed.key, b"Key");
assert_eq!(parsed.value, b"One");
+ let (parsed, _) = parse_header(b"Key: One\n\tOverhang").unwrap();
+ assert_eq!(parsed.key, b"Key");
+ assert_eq!(parsed.value, b"One\n\tOverhang");
+ assert_eq!(parsed.get_value().unwrap(), "One Overhang");
+
parse_header(b" Leading: Space").unwrap_err();
parse_header(b"Just a string").unwrap_err();
parse_header(b"Key\nBroken: Value").unwrap_err();