From 25ccd7f49dd371009d6f843635447b9285deb852 Mon Sep 17 00:00:00 2001 From: Junfeng Liu Date: Wed, 1 Dec 2021 00:01:59 +0800 Subject: [PATCH] Check stream length --- src/document.rs | 4 ++-- src/parser.rs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/document.rs b/src/document.rs index abd298b..a8b10d1 100644 --- a/src/document.rs +++ b/src/document.rs @@ -263,7 +263,7 @@ impl Document { { collect_resources(page_tree, resource_ids, doc); } - }; + } let mut resource_dict = None; let mut resource_ids = Vec::new(); @@ -291,7 +291,7 @@ impl Document { } } } - }; + } let mut fonts = BTreeMap::new(); let (resource_dict, resource_ids) = self.get_page_resources(page_id); diff --git a/src/parser.rs b/src/parser.rs index af1fc6d..58d1f72 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -134,6 +134,7 @@ fn stream<'a>(reader: &'a Reader) -> Parser<'a, u8, Stream> { } value.as_i64() }) { + assert!(length >= 0, "invalid negative stream length"); let stream = take(length as usize) - eol().opt() - seq(b"endstream").expect("endstream"); stream.map(move |data| Stream::new(dict.clone(), data.to_vec())) } else {