From 01ef8bf9ff74e224af0935b4e8f7aebad415d7f3 Mon Sep 17 00:00:00 2001 From: Paulo Costa Date: Mon, 11 May 2020 16:48:42 -0300 Subject: [PATCH] Don't crash with a buffer underflow when packageCount == 0 --- .../apk/parser/parser/ResourceTableParser.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/dongliu/apk/parser/parser/ResourceTableParser.java b/src/main/java/net/dongliu/apk/parser/parser/ResourceTableParser.java index a30d3e0..70bc2a9 100644 --- a/src/main/java/net/dongliu/apk/parser/parser/ResourceTableParser.java +++ b/src/main/java/net/dongliu/apk/parser/parser/ResourceTableParser.java @@ -57,11 +57,13 @@ public void parse() { resourceTable = new ResourceTable(); resourceTable.setStringPool(stringPool); - PackageHeader packageHeader = (PackageHeader) readChunkHeader(); - for (int i = 0; i < resourceTableHeader.getPackageCount(); i++) { - Pair pair = readPackage(packageHeader); - resourceTable.addPackage(pair.getLeft()); - packageHeader = pair.getRight(); + if (resourceTableHeader.getPackageCount() != 0) { + PackageHeader packageHeader = (PackageHeader) readChunkHeader(); + for (int i = 0; i < resourceTableHeader.getPackageCount(); i++) { + Pair pair = readPackage(packageHeader); + resourceTable.addPackage(pair.getLeft()); + packageHeader = pair.getRight(); + } } }