From 59ee0b1bc0203292c66c3ddb582b3248f9c23720 Mon Sep 17 00:00:00 2001 From: David Herberth Date: Thu, 17 Jul 2025 17:56:46 +0200 Subject: [PATCH 1/2] fix(r8): Handle invalid headers gracefully --- Cargo.lock | 2 +- src/mapping.rs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) 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..cd9f560 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), From 1034117bca144b08c58dfe636f8652fbdfbbd0eb Mon Sep 17 00:00:00 2001 From: David Herberth Date: Thu, 17 Jul 2025 18:04:12 +0200 Subject: [PATCH 2/2] add a test --- src/mapping.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mapping.rs b/src/mapping.rs index cd9f560..055a455 100644 --- a/src/mapping.rs +++ b/src/mapping.rs @@ -807,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"}"#;