diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md
index 7b65f09bea..487972b459 100644
--- a/docs/pages/release_notes.md
+++ b/docs/pages/release_notes.md
@@ -55,6 +55,8 @@ at .
* java-bestpractices
* [#783](https://github.com/pmd/pmd/issues/783): \[java] GuardLogStatement regression
* [#800](https://github.com/pmd/pmd/issues/800): \[java] ForLoopCanBeForeach NPE when looping on `this` object
+* java-codestyle
+ * [#817](https://github.com/pmd/pmd/issues/817): \[java] UnnecessaryModifierRule crashes on valid code
* java-design
* [#785](https://github.com/pmd/pmd/issues/785): \[java] NPE in DataClass rule
diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java
index 98501b7e7e..c615cbd06b 100644
--- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java
+++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/codestyle/UnnecessaryModifierRule.java
@@ -150,9 +150,11 @@ public class UnnecessaryModifierRule extends AbstractJavaRule {
private boolean isSafeVarargs(final ASTMethodDeclaration node) {
for (final ASTAnnotation annotation : node.jjtGetParent().findChildrenOfType(ASTAnnotation.class)) {
final Node childAnnotation = annotation.jjtGetChild(0);
- if (childAnnotation instanceof ASTMarkerAnnotation
- && SafeVarargs.class.isAssignableFrom(((ASTMarkerAnnotation) childAnnotation).getType())) {
- return true;
+ if (childAnnotation instanceof ASTMarkerAnnotation) {
+ final ASTMarkerAnnotation marker = (ASTMarkerAnnotation) childAnnotation;
+ if (marker.getType() != null && SafeVarargs.class.isAssignableFrom(marker.getType())) {
+ return true;
+ }
}
}
diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml
index 78d3292930..bfab48dd58 100644
--- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml
+++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/codestyle/xml/UnnecessaryModifier.xml
@@ -585,6 +585,16 @@ public class Foo {
// do something on fw
}
}
+}
+ ]]>
+
+
+ #817 [java] UnnecessaryModifierRule crashes on valid code
+ 0
+