Class FindPotentialSecurityCheckBasedOnUntrustedSource
java.lang.Object
edu.umd.cs.findbugs.visitclass.BetterVisitor
edu.umd.cs.findbugs.visitclass.PreorderVisitor
edu.umd.cs.findbugs.visitclass.AnnotationVisitor
edu.umd.cs.findbugs.visitclass.DismantleBytecode
edu.umd.cs.findbugs.BytecodeScanningDetector
edu.umd.cs.findbugs.bcel.OpcodeStackDetector
edu.umd.cs.findbugs.detect.FindPotentialSecurityCheckBasedOnUntrustedSource
- All Implemented Interfaces:
Detector, Priorities, org.apache.bcel.classfile.Visitor
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate static classprivate static classprivate static classprivate static classNested classes/interfaces inherited from class OpcodeStackDetector
OpcodeStackDetector.WithCustomJumpInfo -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final BugAccumulatorprivate booleanprivate booleanprivate booleanprivate booleanprivate Map<org.apache.bcel.classfile.Method, FindPotentialSecurityCheckBasedOnUntrustedSource.LambdaCallInfo> private static final PatternFields inherited from class OpcodeStackDetector
stackFields inherited from class DismantleBytecode
codeBytes, lineNumberTable, M_BR, M_CP, M_INT, M_PAD, M_R, M_UINTFields inherited from interface Priorities
EXP_PRIORITY, HIGH_PRIORITY, IGNORE_PRIORITY, LOW_PRIORITY, NORMAL_PRIORITY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddToMethodsCalledInsidePrivilegedAction(XMethod calledMethod, OpcodeStack.Item object) private voidaddToNonFinalMethodsCalledOnParam(ClassDescriptor calledClass, XMethod calledMethod, OpcodeStack.Item object) voidafterOpcode(int seen) Note that stack might be TOP when this method is called.getCalledInside(OpcodeStack.Item action, FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo calleeInfo) private String[]private booleanisLambdaNestingMethodLocalVariable(OpcodeStack.Item object, FindPotentialSecurityCheckBasedOnUntrustedSource.LambdaCallInfo lambdaCall) private booleanprivate booleanisTheSame(FindPotentialSecurityCheckBasedOnUntrustedSource.CallerInfo inside, FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo outside, OpcodeStack.Item action) lookForCalledOutside(org.apache.bcel.classfile.JavaClass callerClass, XMethod callerMethod, XClass calledClass, XMethod calledMethod, String argumentName) private voidprivate voidreportBug(org.apache.bcel.classfile.JavaClass cls, XMethod method, SourceLineAnnotation srcLine, FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo calleInfo, SourceLineAnnotation insideSrcLine) voidsawOpcode(int seen) By default, this method will not be called when stack is TOP.voidvisit(org.apache.bcel.classfile.Code obj) voidvisit(org.apache.bcel.classfile.JavaClass obj) voidvisit(org.apache.bcel.classfile.Method obj) voidvisitAfter(org.apache.bcel.classfile.JavaClass obj) Methods inherited from class OpcodeStackDetector
beforeOpcode, getStack, isUsingCustomUserValue, visitCodeMethods inherited from class BytecodeScanningDetector
getClassContext, report, shouldVisitCode, visitClassContextMethods inherited from class DismantleBytecode
areOppositeBranches, atCatchBlock, getBranchFallThrough, getBranchOffset, getBranchTarget, getClassConstantOperand, getClassDescriptorOperand, getCodeByte, getConstantRefOperand, getDefaultSwitchOffset, getDottedClassConstantOperand, getFieldDescriptorOperand, getIntConstant, getLongConstant, getMaxPC, getMethodDescriptorOperand, getNameConstantOperand, getNextCodeByte, getNextOpcode, getNextPC, getOpcode, getPC, getPrevOpcode, getRefConstantOperand, getRefFieldIsStatic, getRegisterOperand, getSigConstantOperand, getStringConstantOperand, getSwitchLabels, getSwitchOffsets, getXClassOperand, getXFieldOperand, getXMethodOperand, isBranch, isMethodCall, isRegisterLoad, isRegisterStore, isRegisterStore, isReturn, isShift, isSwitch, isWideOpcode, printOpCode, sawBranchTo, sawClass, sawDouble, sawField, sawFloat, sawIMethod, sawInt, sawLong, sawMethod, sawRegister, sawStringMethods inherited from class AnnotationVisitor
getAnnotationParameterAsEnum, getAnnotationParameterAsString, getAnnotationParameterAsStringArray, visitAnnotation, visitAnnotation, visitParameterAnnotation, visitParameterAnnotation, visitSyntheticParameterAnnotationMethods inherited from class PreorderVisitor
amVisitingMainMethod, asUnsignedByte, doVisitMethod, getClassDescriptor, getClassName, getCode, getConstantPool, getDottedClassName, getDottedFieldSig, getDottedMethodSig, getDottedSuperclassName, getField, getFieldDescriptor, getFieldIsStatic, getFieldName, getFieldSig, getFullyQualifiedFieldName, getFullyQualifiedMethodName, getMethod, getMethodDescriptor, getMethodName, getMethodSig, getMethodVisitOrder, getNumberArguments, getNumberMethodArguments, getPackageName, getSizeOfSurroundingTryBlock, getSizeOfSurroundingTryBlock, getSourceFile, getStringFromIndex, getSuperclassName, getSurroundingCaughtExceptions, getSurroundingCaughtExceptions, getSurroundingCaughtExceptionTypes, getSurroundingTryBlock, getSurroundingTryBlock, getThisClass, getXClass, getXField, getXMethod, hasInterestingClass, hasInterestingMethod, isVisitMethodsInCallOrder, setupVisitorForClass, setVisitMethodsInCallOrder, shouldVisit, toString, visitAfter, visitAnnotationDefault, visitAnnotationEntry, visitBootstrapMethods, visitConstantInvokeDynamic, visitConstantMethodHandle, visitConstantMethodType, visitConstantModule, visitConstantPackage, visitConstantPool, visitEnclosingMethod, visitingField, visitingMethod, visitInnerClasses, visitJavaClass, visitLineNumberTable, visitLocalVariableTable, visitMethodParameters, visitParameterAnnotationEntry, visitStackMap, visitStackMapEntryMethods inherited from class BetterVisitor
clone, report, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitLineNumber, visitLocalVariable, visitLocalVariableTypeTable, visitMethod, visitSignature, visitSourceFile, visitSynthetic, visitUnknownMethods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.bcel.classfile.Visitor
visitConstantDynamic, visitMethodParameter, visitModule, visitModuleExports, visitModuleMainClass, visitModuleOpens, visitModulePackages, visitModuleProvides, visitModuleRequires, visitNestHost, visitNestMembers, visitRecord, visitRecordComponent, visitStackMapType
-
Field Details
-
NESTED_CLASS_VARIABLE_NAME_PATTERN
-
nonFinalMethodsCalledOnParam
private Map<XMethod, Set<FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo>> nonFinalMethodsCalledOnParam -
methodsCalledInsidePrivilegedAction
private Map<XMethod, Set<FindPotentialSecurityCheckBasedOnUntrustedSource.CallerInfo>> methodsCalledInsidePrivilegedAction -
lambdaFunctions
private Map<OpcodeStack.Item, FindPotentialSecurityCheckBasedOnUntrustedSource.LambdaInfo> lambdaFunctions -
lambdaCalledInDoPrivileged
private Map<org.apache.bcel.classfile.Method, FindPotentialSecurityCheckBasedOnUntrustedSource.LambdaCallInfo> lambdaCalledInDoPrivileged -
parameterNameStack
-
currentLambda
-
isDoPrivilegedDeprecated
private boolean isDoPrivilegedDeprecated -
isDoPrivileged
private boolean isDoPrivileged -
isDoPrivilegedRun
private boolean isDoPrivilegedRun -
isLambdaCalledInDoPrivileged
private boolean isLambdaCalledInDoPrivileged -
bugAccumulator
-
-
Constructor Details
-
FindPotentialSecurityCheckBasedOnUntrustedSource
-
-
Method Details
-
visit
public void visit(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitin classBetterVisitor
-
visit
public void visit(org.apache.bcel.classfile.Method obj) - Overrides:
visitin classBetterVisitor
-
visit
public void visit(org.apache.bcel.classfile.Code obj) - Overrides:
visitin classDismantleBytecode
-
visitAfter
public void visitAfter(org.apache.bcel.classfile.JavaClass obj) - Overrides:
visitAfterin classPreorderVisitor
-
sawOpcode
public void sawOpcode(int seen) Description copied from class:OpcodeStackDetectorBy default, this method will not be called when stack is TOP. To change this behavior, override
#beforeOpcode(int)and change to return true even if stack is TOP.see Using FindBugs for Research to learn lattice and what TOP means.
- Specified by:
sawOpcodein classOpcodeStackDetector- See Also:
-
getParamNames
-
isNestingMethodLocalVariable
-
isLambdaNestingMethodLocalVariable
private boolean isLambdaNestingMethodLocalVariable(OpcodeStack.Item object, FindPotentialSecurityCheckBasedOnUntrustedSource.LambdaCallInfo lambdaCall) -
addToMethodsCalledInsidePrivilegedAction
private void addToMethodsCalledInsidePrivilegedAction(XMethod calledMethod, OpcodeStack.Item object) -
addToNonFinalMethodsCalledOnParam
private void addToNonFinalMethodsCalledOnParam(ClassDescriptor calledClass, XMethod calledMethod, OpcodeStack.Item object) -
lookForCalledOutsideAndInside
private FindPotentialSecurityCheckBasedOnUntrustedSource.CallPair lookForCalledOutsideAndInside(OpcodeStack.Item action) -
getCalledInside
private FindPotentialSecurityCheckBasedOnUntrustedSource.CallerInfo getCalledInside(OpcodeStack.Item action, FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo calleeInfo) -
lookForCalledOutside
private FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo lookForCalledOutside(org.apache.bcel.classfile.JavaClass callerClass, XMethod callerMethod, XClass calledClass, XMethod calledMethod, String argumentName) -
isTheSame
private boolean isTheSame(FindPotentialSecurityCheckBasedOnUntrustedSource.CallerInfo inside, FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo outside, OpcodeStack.Item action) -
reportBug
-
reportBug
private void reportBug(org.apache.bcel.classfile.JavaClass cls, XMethod method, SourceLineAnnotation srcLine, FindPotentialSecurityCheckBasedOnUntrustedSource.CalleeInfo calleInfo, SourceLineAnnotation insideSrcLine) -
afterOpcode
public void afterOpcode(int seen) Description copied from class:OpcodeStackDetectorNote that stack might be TOP when this method is called.
- Overrides:
afterOpcodein classOpcodeStackDetector- See Also:
-