diff --git a/components/net/mime_classifier.rs b/components/net/mime_classifier.rs index 4cdc6e45ec33..f9161c4f8a60 100644 --- a/components/net/mime_classifier.rs +++ b/components/net/mime_classifier.rs @@ -294,7 +294,7 @@ impl ByteMatcher { } else if data == self.pattern { Some(self.pattern.len()) } else { - data[..data.len() - self.pattern.len()].iter() + data[..data.len() - self.pattern.len() + 1].iter() .position(|x| !self.leading_ignore.contains(x)) .and_then(|start| if data[start..].iter() @@ -316,15 +316,19 @@ impl MIMEChecker for ByteMatcher { } fn validate(&self) -> Result<(), String> { + if self.pattern.len() == 0 { + return Err(format!( + "Zero length pattern for {}/{}", + self.content_type.0, self.content_type.1 + )) + } if self.pattern.len() != self.mask.len() { - Err(format!( - "Unequal pattern and mask length for {}/{}", + return Err(format!( + "Unequal pattern and mask length for {}/{}", self.content_type.0, self.content_type.1 )) } - else { - Ok(()) - } + Ok(()) } } diff --git a/tests/unit/net/parsable_mime/image/webp/test.webp b/tests/unit/net/parsable_mime/image/webp/test.webp index 5a907eb4ce25..ad88e62f94c9 100755 Binary files a/tests/unit/net/parsable_mime/image/webp/test.webp and b/tests/unit/net/parsable_mime/image/webp/test.webp differ