Skip to content

Commit

Permalink
Fix errors found while fuzzing
Browse files Browse the repository at this point in the history
Fixes #41
Fixes #42
  • Loading branch information
killercup committed Nov 27, 2017
1 parent aafaebf commit 5ef7844
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions src/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ impl<'a> Parser<'a> {
'"' => self.parse_basic_string(),
'\'' => self.parse_literal_string(),
// Boolean: true
't' if &self.src[self.idx..self.idx + 4] == "true" => {
't' if self.src[self.idx..].starts_with("true") => {
self.inc();
self.inc();
self.inc();
Expand All @@ -331,7 +331,7 @@ impl<'a> Parser<'a> {
})
}
// Boolean: False
'f' if &self.src[self.idx..self.idx + 5] == "false" => {
'f' if self.src[self.idx..].starts_with("false") => {
self.inc();
self.inc();
self.inc();
Expand Down Expand Up @@ -744,4 +744,16 @@ mod tests {
invalid_ints.iter().for_each(|s| {assert_eq!(None, Parser::parse_number(s, Trivia::default()))});
invalid_floats.iter().for_each(|s| {assert_eq!(None, Parser::parse_number(s, Trivia::default()))});
}

#[test]
fn issue41() {
let text = ::std::str::from_utf8(b"\'\'fb\'\xee\x9d\xbd").unwrap();
let _ = Parser::new(text).parse();
}

#[test]
fn issue42() {
let text = ::std::str::from_utf8(b"\'\nv\'f%\nb").unwrap();
let _ = Parser::new(text).parse();
}
}

0 comments on commit 5ef7844

Please sign in to comment.