Uploaded image for project: 'AMQ Streams'
  1. AMQ Streams
  2. ENTMQST-6586

Unhandled NPE in Streams Console ConsolePermission.java

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Undefined Undefined
    • 2.9.1.GA
    • None
    • console
    • None
    • Moderate

      It appears that there are corner cases where resourceNames in com.github.streamshub.console.api.security.ConsolePermission can be uninitialized or initialized to null, resulting in a long stacktrace / 5001 error with the following cause:

      2025-03-17T16:11:39.112078576Z Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.Collection.isEmpty()" because "this.resourceNames" is null
      2025-03-17T16:11:39.112078576Z 	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
      2025-03-17T16:11:39.112078576Z 	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
      2025-03-17T16:11:39.112078576Z 	at io.smallrye.context.CompletableFutureWrapper.get(CompletableFutureWrapper.java:152)
      2025-03-17T16:11:39.112078576Z 	at com.github.streamshub.console.api.security.AuthorizationInterceptor.authorize(AuthorizationInterceptor.java:65)
      2025-03-17T16:11:39.112078576Z 	at com.github.streamshub.console.api.security.AuthorizationInterceptor_Bean.intercept(Unknown Source)
      2025-03-17T16:11:39.112078576Z 	at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:42)
      2025-03-17T16:11:39.112078576Z 	at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:30)
      2025-03-17T16:11:39.112078576Z 	at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:27)
      2025-03-17T16:11:39.112078576Z 	... 222 more
      2025-03-17T16:11:39.112078576Z Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Collection.isEmpty()" because "this.resourceNames" is null
      2025-03-17T16:11:39.112078576Z 	at com.github.streamshub.console.api.security.ConsolePermission.resourceDenied(ConsolePermission.java:102)
      2025-03-17T16:11:39.112078576Z 	at com.github.streamshub.console.api.security.ConsolePermission.implies(ConsolePermission.java:73)
      2025-03-17T16:11:39.112078576Z 	at com.github.streamshub.console.api.security.ConsolePermission.implies(ConsolePermission.java:66)
      2025-03-17T16:11:39.112078576Z 	at com.github.streamshub.console.api.security.ConsoleAuthenticationMechanism.lambda$addRoleChecker$13(ConsoleAuthenticationMechanism.java:368)
      2025-03-17T16:11:39.112078576Z 	at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
      2025-03-17T16:11:39.112078576Z 	at java.base/java.util.AbstractList$RandomAccessSpliterator.tryAdvance(AbstractList.java:706)
      2025-03-17T16:11:39.112078576Z 	at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
      2025-03-17T16:11:39.112078576Z 	at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
      2025-03-17T16:11:39.112078576Z 	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
      2025-03-17T16:11:39.112251001Z 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
      2025-03-17T16:11:39.112251001Z 	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
      2025-03-17T16:11:39.112251001Z 	at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
      2025-03-17T16:11:39.112251001Z 	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      2025-03-17T16:11:39.112251001Z 	at java.base/java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:632)
      2025-03-17T16:11:39.112251001Z 	at com.github.streamshub.console.api.security.ConsoleAuthenticationMechanism.lambda$addRoleChecker$14(ConsoleAuthenticationMechanism.java:368)
      2025-03-17T16:11:39.112251001Z 	at io.quarkus.security.runtime.QuarkusSecurityIdentity.checkPermission(QuarkusSecurityIdentity.java:88)
      2025-03-17T16:11:39.112251001Z 	at io.quarkus.security.runtime.SecurityIdentityProxy$1.apply(SecurityIdentityProxy.java:68)
      2025-03-17T16:11:39.112251001Z 	at io.quarkus.security.runtime.SecurityIdentityProxy$1.apply(SecurityIdentityProxy.java:65)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.context.impl.wrappers.SlowContextualFunction.apply(SlowContextualFunction.java:21)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.performInnerSubscription(UniOnItemTransformToUni.java:68)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni$UniOnItemTransformToUniProcessor.onItem(UniOnItemTransformToUni.java:57)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem$KnownItemSubscription.forward(UniCreateFromKnownItem.java:38)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.uni.builders.UniCreateFromKnownItem.subscribe(UniCreateFromKnownItem.java:23)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.uni.UniOnItemTransformToUni.subscribe(UniOnItemTransformToUni.java:25)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.AbstractUni.subscribe(AbstractUni.java:36)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.groups.UniSubscribe.withSubscriber(UniSubscribe.java:51)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.groups.UniSubscribe.with(UniSubscribe.java:110)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.operators.uni.UniSubscribeToCompletionStage.subscribe(UniSubscribeToCompletionStage.java:30)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.groups.UniSubscribe.asCompletionStage(UniSubscribe.java:174)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.groups.UniSubscribe.asCompletionStage(UniSubscribe.java:162)
      2025-03-17T16:11:39.112251001Z 	at io.smallrye.mutiny.Uni.subscribeAsCompletionStage(Uni.java:141)
      2025-03-17T16:11:39.112251001Z 	at com.github.streamshub.console.api.security.AuthorizationInterceptor.authorize(AuthorizationInterceptor.java:64)
      2025-03-17T16:11:39.112251001Z 	... 226 more
      

              medgar@redhat.com Michael Edgar
              rhn-support-dhawkins Duane Hawkins (Inactive)
              Jan Kalinic Jan Kalinic
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: