Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[javasrc2cpg] Fix NPE when resolving wildcard type #4914

Open
johannescoetzee opened this issue Sep 11, 2024 · 0 comments
Open

[javasrc2cpg] Fix NPE when resolving wildcard type #4914

johannescoetzee opened this issue Sep 11, 2024 · 0 comments
Assignees
Labels
bug Something isn't working

Comments

@johannescoetzee
Copy link
Contributor

Found when creating a CPG for JavaParser. Creating this here because I'm not sure whether it's a JavaParser issue or whether we're using it incorrectly.

java.lang.NullPointerException: Cannot invoke "com.github.javaparser.resolution.types.ResolvedType.isWildcard()" because "type" is null
	at com.github.javaparser.resolution.logic.InferenceContext.placeInferenceVariables(InferenceContext.java:209) ~[com.github.javaparser.javaparser-core-3.26.2.jar:?]
	at com.github.javaparser.resolution.logic.InferenceContext.addPair(InferenceContext.java:65) ~[com.github.javaparser.javaparser-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.resolveLambda(TypeExtractor.java:593) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:513) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:63) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.ast.expr.LambdaExpr.accept(LambdaExpr.java:162) ~[com.github.javaparser.javaparser-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getTypeConcrete(JavaParserFacade.java:533) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getType(JavaParserFacade.java:394) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getType(JavaParserFacade.java:390) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getType(JavaParserFacade.java:359) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.resolveLambda(TypeExtractor.java:565) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:513) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.TypeExtractor.visit(TypeExtractor.java:63) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.ast.expr.LambdaExpr.accept(LambdaExpr.java:162) ~[com.github.javaparser.javaparser-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getTypeConcrete(JavaParserFacade.java:533) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getType(JavaParserFacade.java:394) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getType(JavaParserFacade.java:359) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.symbolsolver.JavaSymbolSolver.calculateType(JavaSymbolSolver.java:443) ~[com.github.javaparser.javaparser-symbol-solver-core-3.26.2.jar:?]
	at com.github.javaparser.ast.expr.Expression.calculateResolvedType(Expression.java:578) ~[com.github.javaparser.javaparser-core-3.26.2.jar:?]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForLambdasCreator.$anonfun$15(AstForLambdasCreator.scala:165) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at scala.util.Try$.apply(Try.scala:210) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at io.joern.javasrc2cpg.astcreation.AstCreator.tryWithSafeStackOverflow(AstCreator.scala:255) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForLambdasCreator.getLambdaImplementedInfo(AstForLambdasCreator.scala:165) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForLambdasCreator.astForLambdaExpr(AstForLambdasCreator.scala:217) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForLambdasCreator.astForLambdaExpr$(AstForLambdasCreator.scala:46) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astForLambdaExpr(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForExpressionsCreator.astsForExpression(AstForExpressionsCreator.scala:57) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForExpressionsCreator.astsForExpression$(AstForExpressionsCreator.scala:31) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astsForExpression(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForCallExpressionsCreator.$anonfun$34(AstForCallExpressionsCreator.scala:292) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at scala.collection.StrictOptimizedIterableOps.flatMap(StrictOptimizedIterableOps.scala:118) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at scala.collection.StrictOptimizedIterableOps.flatMap$(StrictOptimizedIterableOps.scala:105) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at scala.collection.mutable.ArrayBuffer.flatMap(ArrayBuffer.scala:43) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForCallExpressionsCreator.argAstsForCall(AstForCallExpressionsCreator.scala:293) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForCallExpressionsCreator.argAstsForCall$(AstForCallExpressionsCreator.scala:51) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.argAstsForCall(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForCallExpressionsCreator.astForMethodCall(AstForCallExpressionsCreator.scala:59) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForCallExpressionsCreator.astForMethodCall$(AstForCallExpressionsCreator.scala:51) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astForMethodCall(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForExpressionsCreator.astsForExpression(AstForExpressionsCreator.scala:59) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.expressions.AstForExpressionsCreator.astsForExpression$(AstForExpressionsCreator.scala:31) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astsForExpression(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.statements.AstForStatementsCreator.astsForStatement(AstForStatementsCreator.scala:47) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.statements.AstForStatementsCreator.astsForStatement$(AstForStatementsCreator.scala:29) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astsForStatement(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.statements.AstForSimpleStatementsCreator.$anonfun$1(AstForSimpleStatementsCreator.scala:43) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at scala.collection.StrictOptimizedIterableOps.flatMap(StrictOptimizedIterableOps.scala:118) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at scala.collection.StrictOptimizedIterableOps.flatMap$(StrictOptimizedIterableOps.scala:105) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at scala.collection.convert.JavaCollectionWrappers$JListWrapper.flatMap(JavaCollectionWrappers.scala:138) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at io.joern.javasrc2cpg.astcreation.statements.AstForSimpleStatementsCreator.astForBlockStatement(AstForSimpleStatementsCreator.scala:43) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.statements.AstForSimpleStatementsCreator.astForBlockStatement$(AstForSimpleStatementsCreator.scala:34) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astForBlockStatement(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.declarations.AstForMethodsCreator.$anonfun$12(AstForMethodsCreator.scala:95) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at scala.Option.map(Option.scala:242) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at io.joern.javasrc2cpg.astcreation.declarations.AstForMethodsCreator.astForMethod(AstForMethodsCreator.scala:95) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.declarations.AstForMethodsCreator.astForMethod$(AstForMethodsCreator.scala:48) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astForMethod(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.declarations.AstForTypeDeclsCreator.$anonfun$16(AstForTypeDeclsCreator.scala:323) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at scala.collection.immutable.List.map(List.scala:250) ~[org.scala-lang.scala-library-2.13.12.jar:?]
	at io.joern.javasrc2cpg.astcreation.declarations.AstForTypeDeclsCreator.astsForTypeDeclMembers(AstForTypeDeclsCreator.scala:342) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.declarations.AstForTypeDeclsCreator.astForTypeDeclaration(AstForTypeDeclsCreator.scala:190) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.declarations.AstForTypeDeclsCreator.astForTypeDeclaration$(AstForTypeDeclsCreator.scala:90) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astForTypeDeclaration(AstCreator.scala:85) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.$anonfun$4(AstCreator.scala:215) ~[io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at scala.collection.StrictOptimizedIterableOps.map(StrictOptimizedIterableOps.scala:100) [org.scala-lang.scala-library-2.13.12.jar:?]
	at scala.collection.StrictOptimizedIterableOps.map$(StrictOptimizedIterableOps.scala:87) [org.scala-lang.scala-library-2.13.12.jar:?]
	at scala.collection.convert.JavaCollectionWrappers$JListWrapper.map(JavaCollectionWrappers.scala:138) [org.scala-lang.scala-library-2.13.12.jar:?]
	at io.joern.javasrc2cpg.astcreation.AstCreator.astForTranslationUnit(AstCreator.scala:215) [io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.astcreation.AstCreator.createAst(AstCreator.scala:114) [io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.passes.AstCreationPass.runOnPart(AstCreationPass.scala:66) [io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.joern.javasrc2cpg.passes.AstCreationPass.runOnPart(AstCreationPass.scala:51) [io.joern.javasrc2cpg-4.0.69+2-1ddddd18+20240911-1301.jar:4.0.69+2-1ddddd18+20240911-1301]
	at io.shiftleft.passes.ForkJoinParallelCpgPass$$anon$2.accept(CpgPass.scala:129) [io.shiftleft.codepropertygraph_3-1.7.8.jar:1.7.8]
	at io.shiftleft.passes.ForkJoinParallelCpgPass$$anon$2.accept(CpgPass.scala:128) [io.shiftleft.codepropertygraph_3-1.7.8.jar:1.7.8]
	at java.util.stream.ReduceOps$4ReducingSink.accept(ReduceOps.java:220) [?:?]
	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024) [?:?]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) [?:?]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) [?:?]
	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:960) [?:?]
	at java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:934) [?:?]
	at java.util.stream.AbstractTask.compute(AbstractTask.java:327) [?:?]
	at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754) [?:?]
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) [?:?]
	at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312) [?:?]
	at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843) [?:?]
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808) [?:?]
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188) [?:?]
@johannescoetzee johannescoetzee added the bug Something isn't working label Sep 11, 2024
@johannescoetzee johannescoetzee self-assigned this Sep 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant