diff --git a/Cargo.lock b/Cargo.lock index 69dfef2..bc1102a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -334,7 +334,7 @@ dependencies = [ [[package]] name = "proguard" -version = "5.5.0" +version = "5.6.1" dependencies = [ "criterion", "serde", diff --git a/src/mapping.rs b/src/mapping.rs index 27063dd..055a455 100644 --- a/src/mapping.rs +++ b/src/mapping.rs @@ -521,7 +521,10 @@ fn parse_r8_header(bytes: &[u8]) -> Result<(ProguardRecord, &[u8]), ParseError> let (header, rest) = parse_until(bytes, is_newline)?; - let header = serde_json::from_str(header).unwrap(); + let header = serde_json::from_str(header).map_err(|_| ParseError { + line: bytes, + kind: ParseErrorKind::ParseError("invalid r8 header"), + })?; Ok(( ProguardRecord::R8Header(header), consume_leading_newlines(rest), @@ -804,6 +807,12 @@ mod tests { ); } + #[test] + fn try_parse_r8_headers_invalid() { + let bytes = br#"# {123:"foobar"}"#; + assert!(ProguardRecord::try_parse(bytes).is_err(),); + } + #[test] fn try_parse_r8_headers() { let bytes = br#"# {"id":"foobar"}"#;