This is an automated email from the ASF dual-hosted git repository.

elharo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-dependency-analyzer.git


The following commit(s) were added to refs/heads/master by this push:
     new 51af550  [MSHARED-1248] maven-dependency-analyzer should log instead 
of failing (#89)
51af550 is described below

commit 51af550e753c4123008ff2f1c5686928e160bceb
Author: Gary Gregory <[email protected]>
AuthorDate: Sun Jun 25 08:50:27 2023 -0400

    [MSHARED-1248] maven-dependency-analyzer should log instead of failing (#89)
    
    * [MSHARED-1248] maven-dependency-analyzer should log instead of failing
    when analyzing a corrupted jar file
---
 pom.xml                                            |   2 +
 .../analyzer/asm/DependencyClassFileVisitor.java   |   5 +-
 .../analyzer/asm/ResultCollectorTest.java          |  59 ++++++++++++++++++++-
 .../analyzer/ossfuzz/issue51980/Test.class.clazz   | Bin 0 -> 54 bytes
 .../analyzer/ossfuzz/issue51989/Test.class.clazz   | Bin 0 -> 88 bytes
 .../analyzer/ossfuzz/issue52168/Test.class.clazz   | Bin 0 -> 61 bytes
 .../analyzer/ossfuzz/issue53543/Test.class.clazz   | Bin 0 -> 57 bytes
 .../analyzer/ossfuzz/issue53544a/Test.class.clazz  | Bin 0 -> 49 bytes
 .../analyzer/ossfuzz/issue53620/Test.class.clazz   | Bin 0 -> 227530 bytes
 .../analyzer/ossfuzz/issue53676/Test.class.clazz   | Bin 0 -> 26 bytes
 .../analyzer/ossfuzz/issue54119/Test.class.clazz   | Bin 0 -> 24 bytes
 .../analyzer/ossfuzz/issue54254/Test.class.clazz   | Bin 0 -> 42 bytes
 12 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index 51490b7..7a900b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -139,6 +139,8 @@
         <artifactId>apache-rat-plugin</artifactId>
         <configuration>
           <excludes combine.children="append">
+            <!-- Corrupted class files -->
+            <exclude>**/*.clazz</exclude>
             <!-- binary class for unit test -->
             <exclude>**/*.classx</exclude>
           </excludes>
diff --git 
a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java
 
b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java
index 292531e..8f70116 100644
--- 
a/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java
+++ 
b/src/main/java/org/apache/maven/shared/dependency/analyzer/asm/DependencyClassFileVisitor.java
@@ -75,7 +75,10 @@ public class DependencyClassFileVisitor implements 
ClassFileVisitor {
         } catch (IndexOutOfBoundsException e) {
             // some bug inside ASM causes an IOB exception. Log it and move on?
             // this happens when the class isn't valid.
-            logger.warn("Unable to process: " + className);
+            logger.warn("Unable to process: " + className, e);
+        } catch (IllegalArgumentException e) {
+            // [MSHARED-1248] should log instead of failing when analyzing a 
corrupted jar file
+            logger.warn("Byte code of '" + className + "' is corrupt", e);
         }
     }
 
diff --git 
a/src/test/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollectorTest.java
 
b/src/test/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollectorTest.java
index bcafd0e..2590bbc 100644
--- 
a/src/test/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollectorTest.java
+++ 
b/src/test/java/org/apache/maven/shared/dependency/analyzer/asm/ResultCollectorTest.java
@@ -33,6 +33,9 @@ import org.junit.jupiter.api.Test;
 import static org.assertj.core.api.Assertions.assertThat;
 
 class ResultCollectorTest {
+
+    private static String ROOT = 
"src/test/resources/org/apache/maven/shared/dependency/analyzer";
+
     Set<String> getDependencies(Class<?> inspectClass) throws IOException {
         String className = inspectClass.getName();
         String path = '/' + className.replace('.', '/') + ".class";
@@ -50,7 +53,61 @@ class ResultCollectorTest {
                 
"src/test/resources/org/apache/maven/shared/dependency/analyzer/commons-bcel-issue362/Bcel362.classx");
         DependencyClassFileVisitor visitor = new DependencyClassFileVisitor();
         try (InputStream is = Files.newInputStream(path)) {
-            visitor.visitClass(className, is);
+            visitor.visitClass("issue362.Bcel362", is);
+        }
+    }
+
+    @Test
+    public void testOssFuzz51980() throws IOException {
+        // Add a non-"class" suffix so that surefire does not try to read the 
file and fail the build
+        visitClass(ROOT + "/ossfuzz/issue51980/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz51989() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue51989/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz52168() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue52168/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz53543() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue53543/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz53544a() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue53544a/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz53620() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue53620/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz53676() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue53676/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz54199() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue54119/Test.class.clazz");
+    }
+
+    @Test
+    public void testOssFuzz54254() throws IOException {
+        visitClass(ROOT + "/ossfuzz/issue54254/Test.class.clazz");
+    }
+
+    private void visitClass(String location) throws IOException {
+        Path path = Paths.get(location);
+        DependencyClassFileVisitor visitor = new DependencyClassFileVisitor();
+        try (InputStream is = Files.newInputStream(path)) {
+            visitor.visitClass("Test", is);
         }
     }
 
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue51980/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue51980/Test.class.clazz
new file mode 100644
index 0000000..314e094
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue51980/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue51989/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue51989/Test.class.clazz
new file mode 100644
index 0000000..cce2039
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue51989/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue52168/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue52168/Test.class.clazz
new file mode 100644
index 0000000..e92207b
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue52168/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53543/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53543/Test.class.clazz
new file mode 100644
index 0000000..808e337
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53543/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53544a/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53544a/Test.class.clazz
new file mode 100644
index 0000000..5fbdd67
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53544a/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53620/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53620/Test.class.clazz
new file mode 100644
index 0000000..e263fcd
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53620/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53676/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53676/Test.class.clazz
new file mode 100644
index 0000000..c0ca857
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue53676/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue54119/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue54119/Test.class.clazz
new file mode 100644
index 0000000..4b405c3
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue54119/Test.class.clazz
 differ
diff --git 
a/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue54254/Test.class.clazz
 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue54254/Test.class.clazz
new file mode 100644
index 0000000..275741e
Binary files /dev/null and 
b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue54254/Test.class.clazz
 differ

Reply via email to