diff --git a/pom.xml b/pom.xml index 723d952d..e00501b6 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,16 @@ org.eclipse.sisu sisu-maven-plugin + + org.apache.rat + apache-rat-plugin + + + + **/*.clazz + + + 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 8c1cd3da..e456415e 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 @@ -71,7 +71,7 @@ public void visitClass(String className, InputStream in) { reader.accept(classVisitor, 0); } catch (IOException exception) { exception.printStackTrace(); - } catch (IndexOutOfBoundsException e) { + } catch (IndexOutOfBoundsException | IllegalArgumentException 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); 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 7cb376e5..33b5fd56 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 static org.assertj.core.api.Assertions.assertThat; public class ResultCollectorTest { + + private static String ROOT = "src/test/resources/org/apache/maven/shared/dependency/analyzer"; + Set getDependencies(Class inspectClass) throws IOException { String className = inspectClass.getName(); String path = '/' + className.replace('.', '/') + ".class"; @@ -45,12 +48,64 @@ Set getDependencies(Class inspectClass) throws IOException { @Test public void testJava11Invoke() throws IOException { - String className = "issue362.Bcel362"; - Path path = Paths.get( - "src/test/resources/org/apache/maven/shared/dependency/analyzer/commons-bcel-issue362/Bcel362.class"); + Path path = Paths.get(ROOT + "/commons-bcel-issue362/Bcel362.class"); 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 00000000..314e0945 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 00000000..cce2039d 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 00000000..e92207bc 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 00000000..808e3379 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 00000000..5fbdd67f 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 00000000..e263fcd4 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 00000000..c0ca8577 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 00000000..4b405c31 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 00000000..275741ee Binary files /dev/null and b/src/test/resources/org/apache/maven/shared/dependency/analyzer/ossfuzz/issue54254/Test.class.clazz differ