Merge pull request #12230 from aschackmull/all/autoformat

Mass autoformat with class and module declarations format fix
This commit is contained in:
Anders Schack-Mulligen
2023-03-10 12:29:34 +01:00
committed by GitHub
260 changed files with 1257 additions and 662 deletions

View File

@@ -7,7 +7,8 @@ import TaintTrackingParameter::Public
private import TaintTrackingParameter::Private private import TaintTrackingParameter::Private
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements
DataFlowInternal::FullStateConfigSig { DataFlowInternal::FullStateConfigSig
{
import Config import Config
predicate isBarrier(DataFlow::Node node) { predicate isBarrier(DataFlow::Node node) {

View File

@@ -159,7 +159,8 @@ class NameQualifyingElement extends Element, @namequalifyingelement {
* A special name-qualifying element. For example: `__super`. * A special name-qualifying element. For example: `__super`.
*/ */
library class SpecialNameQualifyingElement extends NameQualifyingElement, library class SpecialNameQualifyingElement extends NameQualifyingElement,
@specialnamequalifyingelement { @specialnamequalifyingelement
{
/** Gets the name of this special qualifying element. */ /** Gets the name of this special qualifying element. */
override string getName() { specialnamequalifyingelements(underlyingElement(this), result) } override string getName() { specialnamequalifyingelements(underlyingElement(this), result) }

View File

@@ -7,7 +7,8 @@ import TaintTrackingParameter::Public
private import TaintTrackingParameter::Private private import TaintTrackingParameter::Private
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements
DataFlowInternal::FullStateConfigSig { DataFlowInternal::FullStateConfigSig
{
import Config import Config
predicate isBarrier(DataFlow::Node node) { predicate isBarrier(DataFlow::Node node) {

View File

@@ -569,7 +569,8 @@ class BuiltInOperationBuiltInAddressOf extends UnaryOperation, BuiltInOperation,
* ``` * ```
*/ */
class BuiltInOperationIsTriviallyConstructible extends BuiltInOperation, class BuiltInOperationIsTriviallyConstructible extends BuiltInOperation,
@istriviallyconstructibleexpr { @istriviallyconstructibleexpr
{
override string toString() { result = "__is_trivially_constructible" } override string toString() { result = "__is_trivially_constructible" }
override string getAPrimaryQlClass() { result = "BuiltInOperationIsTriviallyConstructible" } override string getAPrimaryQlClass() { result = "BuiltInOperationIsTriviallyConstructible" }
@@ -619,7 +620,8 @@ class BuiltInOperationIsNothrowDestructible extends BuiltInOperation, @isnothrow
* bool v = __is_trivially_destructible(MyType); * bool v = __is_trivially_destructible(MyType);
* ``` * ```
*/ */
class BuiltInOperationIsTriviallyDestructible extends BuiltInOperation, @istriviallydestructibleexpr { class BuiltInOperationIsTriviallyDestructible extends BuiltInOperation, @istriviallydestructibleexpr
{
override string toString() { result = "__is_trivially_destructible" } override string toString() { result = "__is_trivially_destructible" }
override string getAPrimaryQlClass() { result = "BuiltInOperationIsTriviallyDestructible" } override string getAPrimaryQlClass() { result = "BuiltInOperationIsTriviallyDestructible" }
@@ -738,7 +740,8 @@ class BuiltInOperationIsLiteralType extends BuiltInOperation, @isliteraltypeexpr
* ``` * ```
*/ */
class BuiltInOperationHasTrivialMoveConstructor extends BuiltInOperation, class BuiltInOperationHasTrivialMoveConstructor extends BuiltInOperation,
@hastrivialmoveconstructorexpr { @hastrivialmoveconstructorexpr
{
override string toString() { result = "__has_trivial_move_constructor" } override string toString() { result = "__has_trivial_move_constructor" }
override string getAPrimaryQlClass() { result = "BuiltInOperationHasTrivialMoveConstructor" } override string getAPrimaryQlClass() { result = "BuiltInOperationHasTrivialMoveConstructor" }
@@ -1034,7 +1037,8 @@ class BuiltInOperationIsAggregate extends BuiltInOperation, @isaggregate {
* ``` * ```
*/ */
class BuiltInOperationHasUniqueObjectRepresentations extends BuiltInOperation, class BuiltInOperationHasUniqueObjectRepresentations extends BuiltInOperation,
@hasuniqueobjectrepresentations { @hasuniqueobjectrepresentations
{
override string toString() { result = "__has_unique_object_representations" } override string toString() { result = "__has_unique_object_representations" }
override string getAPrimaryQlClass() { result = "BuiltInOperationHasUniqueObjectRepresentations" } override string getAPrimaryQlClass() { result = "BuiltInOperationHasUniqueObjectRepresentations" }
@@ -1107,7 +1111,8 @@ class BuiltInOperationIsLayoutCompatible extends BuiltInOperation, @islayoutcomp
* ``` * ```
*/ */
class BuiltInOperationIsPointerInterconvertibleBaseOf extends BuiltInOperation, class BuiltInOperationIsPointerInterconvertibleBaseOf extends BuiltInOperation,
@ispointerinterconvertiblebaseof { @ispointerinterconvertiblebaseof
{
override string toString() { result = "__is_pointer_interconvertible_base_of" } override string toString() { result = "__is_pointer_interconvertible_base_of" }
override string getAPrimaryQlClass() { override string getAPrimaryQlClass() {

View File

@@ -7,7 +7,8 @@ import TaintTrackingParameter::Public
private import TaintTrackingParameter::Private private import TaintTrackingParameter::Private
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements
DataFlowInternal::FullStateConfigSig { DataFlowInternal::FullStateConfigSig
{
import Config import Config
predicate isBarrier(DataFlow::Node node) { predicate isBarrier(DataFlow::Node node) {

View File

@@ -1082,7 +1082,8 @@ module Opcode {
* See the `CallSideEffectInstruction` documentation for more details. * See the `CallSideEffectInstruction` documentation for more details.
*/ */
class CallSideEffect extends WriteSideEffectOpcode, EscapedWriteOpcode, MayWriteOpcode, class CallSideEffect extends WriteSideEffectOpcode, EscapedWriteOpcode, MayWriteOpcode,
ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode, TCallSideEffect { ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode, TCallSideEffect
{
final override string toString() { result = "CallSideEffect" } final override string toString() { result = "CallSideEffect" }
} }
@@ -1092,7 +1093,8 @@ module Opcode {
* See the `CallReadSideEffectInstruction` documentation for more details. * See the `CallReadSideEffectInstruction` documentation for more details.
*/ */
class CallReadSideEffect extends ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode, class CallReadSideEffect extends ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode,
TCallReadSideEffect { TCallReadSideEffect
{
final override string toString() { result = "CallReadSideEffect" } final override string toString() { result = "CallReadSideEffect" }
} }
@@ -1102,7 +1104,8 @@ module Opcode {
* See the `IndirectReadSideEffectInstruction` documentation for more details. * See the `IndirectReadSideEffectInstruction` documentation for more details.
*/ */
class IndirectReadSideEffect extends ReadSideEffectOpcode, IndirectReadOpcode, class IndirectReadSideEffect extends ReadSideEffectOpcode, IndirectReadOpcode,
TIndirectReadSideEffect { TIndirectReadSideEffect
{
final override string toString() { result = "IndirectReadSideEffect" } final override string toString() { result = "IndirectReadSideEffect" }
} }
@@ -1112,7 +1115,8 @@ module Opcode {
* See the `IndirectMustWriteSideEffectInstruction` documentation for more details. * See the `IndirectMustWriteSideEffectInstruction` documentation for more details.
*/ */
class IndirectMustWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode, class IndirectMustWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode,
TIndirectMustWriteSideEffect { TIndirectMustWriteSideEffect
{
final override string toString() { result = "IndirectMustWriteSideEffect" } final override string toString() { result = "IndirectMustWriteSideEffect" }
} }
@@ -1122,7 +1126,8 @@ module Opcode {
* See the `IndirectMayWriteSideEffectInstruction` documentation for more details. * See the `IndirectMayWriteSideEffectInstruction` documentation for more details.
*/ */
class IndirectMayWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode, class IndirectMayWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode,
MayWriteOpcode, TIndirectMayWriteSideEffect { MayWriteOpcode, TIndirectMayWriteSideEffect
{
final override string toString() { result = "IndirectMayWriteSideEffect" } final override string toString() { result = "IndirectMayWriteSideEffect" }
} }
@@ -1132,7 +1137,8 @@ module Opcode {
* See the `BufferReadSideEffectInstruction` documentation for more details. * See the `BufferReadSideEffectInstruction` documentation for more details.
*/ */
class BufferReadSideEffect extends ReadSideEffectOpcode, UnsizedBufferReadOpcode, class BufferReadSideEffect extends ReadSideEffectOpcode, UnsizedBufferReadOpcode,
TBufferReadSideEffect { TBufferReadSideEffect
{
final override string toString() { result = "BufferReadSideEffect" } final override string toString() { result = "BufferReadSideEffect" }
} }
@@ -1142,7 +1148,8 @@ module Opcode {
* See the `BufferMustWriteSideEffectInstruction` documentation for more details. * See the `BufferMustWriteSideEffectInstruction` documentation for more details.
*/ */
class BufferMustWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode, class BufferMustWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode,
TBufferMustWriteSideEffect { TBufferMustWriteSideEffect
{
final override string toString() { result = "BufferMustWriteSideEffect" } final override string toString() { result = "BufferMustWriteSideEffect" }
} }
@@ -1152,7 +1159,8 @@ module Opcode {
* See the `BufferMayWriteSideEffectInstruction` documentation for more details. * See the `BufferMayWriteSideEffectInstruction` documentation for more details.
*/ */
class BufferMayWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode, class BufferMayWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode,
MayWriteOpcode, TBufferMayWriteSideEffect { MayWriteOpcode, TBufferMayWriteSideEffect
{
final override string toString() { result = "BufferMayWriteSideEffect" } final override string toString() { result = "BufferMayWriteSideEffect" }
} }
@@ -1162,7 +1170,8 @@ module Opcode {
* See the `SizedBufferReadSideEffectInstruction` documentation for more details. * See the `SizedBufferReadSideEffectInstruction` documentation for more details.
*/ */
class SizedBufferReadSideEffect extends ReadSideEffectOpcode, SizedBufferReadOpcode, class SizedBufferReadSideEffect extends ReadSideEffectOpcode, SizedBufferReadOpcode,
TSizedBufferReadSideEffect { TSizedBufferReadSideEffect
{
final override string toString() { result = "SizedBufferReadSideEffect" } final override string toString() { result = "SizedBufferReadSideEffect" }
} }
@@ -1172,7 +1181,8 @@ module Opcode {
* See the `SizedBufferMustWriteSideEffectInstruction` documentation for more details. * See the `SizedBufferMustWriteSideEffectInstruction` documentation for more details.
*/ */
class SizedBufferMustWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode, class SizedBufferMustWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode,
TSizedBufferMustWriteSideEffect { TSizedBufferMustWriteSideEffect
{
final override string toString() { result = "SizedBufferMustWriteSideEffect" } final override string toString() { result = "SizedBufferMustWriteSideEffect" }
} }
@@ -1182,7 +1192,8 @@ module Opcode {
* See the `SizedBufferMayWriteSideEffectInstruction` documentation for more details. * See the `SizedBufferMayWriteSideEffectInstruction` documentation for more details.
*/ */
class SizedBufferMayWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode, class SizedBufferMayWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode,
MayWriteOpcode, TSizedBufferMayWriteSideEffect { MayWriteOpcode, TSizedBufferMayWriteSideEffect
{
final override string toString() { result = "SizedBufferMayWriteSideEffect" } final override string toString() { result = "SizedBufferMayWriteSideEffect" }
} }
@@ -1192,7 +1203,8 @@ module Opcode {
* See the `InitializeDynamicAllocationInstruction` documentation for more details. * See the `InitializeDynamicAllocationInstruction` documentation for more details.
*/ */
class InitializeDynamicAllocation extends SideEffectOpcode, EntireAllocationWriteOpcode, class InitializeDynamicAllocation extends SideEffectOpcode, EntireAllocationWriteOpcode,
TInitializeDynamicAllocation { TInitializeDynamicAllocation
{
final override string toString() { result = "InitializeDynamicAllocation" } final override string toString() { result = "InitializeDynamicAllocation" }
} }
@@ -1221,7 +1233,8 @@ module Opcode {
* See the `InlineAsmInstruction` documentation for more details. * See the `InlineAsmInstruction` documentation for more details.
*/ */
class InlineAsm extends Opcode, EscapedWriteOpcode, MayWriteOpcode, EscapedReadOpcode, class InlineAsm extends Opcode, EscapedWriteOpcode, MayWriteOpcode, EscapedReadOpcode,
MayReadOpcode, TInlineAsm { MayReadOpcode, TInlineAsm
{
final override string toString() { result = "InlineAsm" } final override string toString() { result = "InlineAsm" }
final override predicate hasOperandInternal(OperandTag tag) { final override predicate hasOperandInternal(OperandTag tag) {

View File

@@ -246,7 +246,8 @@ class VariableMemoryLocation extends TVariableMemoryLocation, AllocationMemoryLo
} }
class EntireAllocationMemoryLocation extends TEntireAllocationMemoryLocation, class EntireAllocationMemoryLocation extends TEntireAllocationMemoryLocation,
AllocationMemoryLocation { AllocationMemoryLocation
{
EntireAllocationMemoryLocation() { this = TEntireAllocationMemoryLocation(var, isMayAccess) } EntireAllocationMemoryLocation() { this = TEntireAllocationMemoryLocation(var, isMayAccess) }
final override string toStringInternal() { result = var.toString() } final override string toStringInternal() { result = var.toString() }

View File

@@ -511,7 +511,8 @@ abstract class TranslatedArgumentSideEffect extends TranslatedSideEffect {
* calls other than constructor calls. * calls other than constructor calls.
*/ */
class TranslatedArgumentExprSideEffect extends TranslatedArgumentSideEffect, class TranslatedArgumentExprSideEffect extends TranslatedArgumentSideEffect,
TTranslatedArgumentExprSideEffect { TTranslatedArgumentExprSideEffect
{
Expr arg; Expr arg;
TranslatedArgumentExprSideEffect() { TranslatedArgumentExprSideEffect() {
@@ -546,7 +547,8 @@ class TranslatedArgumentExprSideEffect extends TranslatedArgumentSideEffect,
* calls to non-static member functions. * calls to non-static member functions.
*/ */
class TranslatedStructorQualifierSideEffect extends TranslatedArgumentSideEffect, class TranslatedStructorQualifierSideEffect extends TranslatedArgumentSideEffect,
TTranslatedStructorQualifierSideEffect { TTranslatedStructorQualifierSideEffect
{
TranslatedStructorQualifierSideEffect() { TranslatedStructorQualifierSideEffect() {
this = TTranslatedStructorQualifierSideEffect(call, sideEffectOpcode) and this = TTranslatedStructorQualifierSideEffect(call, sideEffectOpcode) and
index = -1 index = -1

View File

@@ -34,7 +34,8 @@ abstract class TranslatedCondition extends TranslatedElement {
} }
abstract class TranslatedFlexibleCondition extends TranslatedCondition, ConditionContext, abstract class TranslatedFlexibleCondition extends TranslatedCondition, ConditionContext,
TTranslatedFlexibleCondition { TTranslatedFlexibleCondition
{
TranslatedFlexibleCondition() { this = TTranslatedFlexibleCondition(expr) } TranslatedFlexibleCondition() { this = TTranslatedFlexibleCondition(expr) }
final override TranslatedElement getChild(int id) { id = 0 and result = getOperand() } final override TranslatedElement getChild(int id) { id = 0 and result = getOperand() }

View File

@@ -75,7 +75,8 @@ abstract class TranslatedLocalVariableDeclaration extends TranslatedVariableInit
* The IR translation of a local variable declaration within a declaration statement. * The IR translation of a local variable declaration within a declaration statement.
*/ */
class TranslatedAutoVariableDeclarationEntry extends TranslatedLocalVariableDeclaration, class TranslatedAutoVariableDeclarationEntry extends TranslatedLocalVariableDeclaration,
TranslatedDeclarationEntry { TranslatedDeclarationEntry
{
StackVariable var; StackVariable var;
TranslatedAutoVariableDeclarationEntry() { var = entry.getDeclaration() } TranslatedAutoVariableDeclarationEntry() { var = entry.getDeclaration() }
@@ -217,7 +218,8 @@ class TranslatedStaticLocalVariableDeclarationEntry extends TranslatedDeclaratio
* with a dynamic initializer. * with a dynamic initializer.
*/ */
class TranslatedStaticLocalVariableInitialization extends TranslatedElement, class TranslatedStaticLocalVariableInitialization extends TranslatedElement,
TranslatedLocalVariableDeclaration, TTranslatedStaticLocalVariableInitialization { TranslatedLocalVariableDeclaration, TTranslatedStaticLocalVariableInitialization
{
IRVariableDeclarationEntry entry; IRVariableDeclarationEntry entry;
StaticLocalVariable var; StaticLocalVariable var;

View File

@@ -131,7 +131,8 @@ abstract class TranslatedCoreExpr extends TranslatedExpr {
} }
class TranslatedConditionValue extends TranslatedCoreExpr, ConditionContext, class TranslatedConditionValue extends TranslatedCoreExpr, ConditionContext,
TTranslatedConditionValue { TTranslatedConditionValue
{
TranslatedConditionValue() { this = TTranslatedConditionValue(expr) } TranslatedConditionValue() { this = TTranslatedConditionValue(expr) }
override TranslatedElement getChild(int id) { id = 0 and result = this.getCondition() } override TranslatedElement getChild(int id) { id = 0 and result = this.getCondition() }
@@ -326,7 +327,8 @@ class TranslatedLoad extends TranslatedValueCategoryAdjustment, TTranslatedLoad
* from the AST. * from the AST.
*/ */
class TranslatedSyntheticTemporaryObject extends TranslatedValueCategoryAdjustment, class TranslatedSyntheticTemporaryObject extends TranslatedValueCategoryAdjustment,
TTranslatedSyntheticTemporaryObject { TTranslatedSyntheticTemporaryObject
{
TranslatedSyntheticTemporaryObject() { this = TTranslatedSyntheticTemporaryObject(expr) } TranslatedSyntheticTemporaryObject() { this = TTranslatedSyntheticTemporaryObject(expr) }
override string toString() { result = "Temporary materialization of " + expr.toString() } override string toString() { result = "Temporary materialization of " + expr.toString() }
@@ -2302,7 +2304,8 @@ class TranslatedBinaryConditionalExpr extends TranslatedConditionalExpr {
* its initializer. * its initializer.
*/ */
class TranslatedTemporaryObjectExpr extends TranslatedNonConstantExpr, class TranslatedTemporaryObjectExpr extends TranslatedNonConstantExpr,
TranslatedVariableInitialization { TranslatedVariableInitialization
{
override TemporaryObjectExpr expr; override TemporaryObjectExpr expr;
final override predicate hasTempVariable(TempVariableTag tag, CppType type) { final override predicate hasTempVariable(TempVariableTag tag, CppType type) {

View File

@@ -566,7 +566,8 @@ private TranslatedConstructorInitList getTranslatedConstructorInitList(Function
* instances for constructors can actually contain initializers. * instances for constructors can actually contain initializers.
*/ */
class TranslatedConstructorInitList extends TranslatedElement, InitializationContext, class TranslatedConstructorInitList extends TranslatedElement, InitializationContext,
TTranslatedConstructorInitList { TTranslatedConstructorInitList
{
Function func; Function func;
TranslatedConstructorInitList() { this = TTranslatedConstructorInitList(func) } TranslatedConstructorInitList() { this = TTranslatedConstructorInitList(func) }
@@ -637,7 +638,8 @@ private TranslatedDestructorDestructionList getTranslatedDestructorDestructionLi
* destructions. * destructions.
*/ */
class TranslatedDestructorDestructionList extends TranslatedElement, class TranslatedDestructorDestructionList extends TranslatedElement,
TTranslatedDestructorDestructionList { TTranslatedDestructorDestructionList
{
Function func; Function func;
TranslatedDestructorDestructionList() { this = TTranslatedDestructorDestructionList(func) } TranslatedDestructorDestructionList() { this = TTranslatedDestructorDestructionList(func) }

View File

@@ -9,7 +9,8 @@ private import InstructionTag
private import semmle.code.cpp.ir.internal.IRUtilities private import semmle.code.cpp.ir.internal.IRUtilities
class TranslatedGlobalOrNamespaceVarInit extends TranslatedRootElement, class TranslatedGlobalOrNamespaceVarInit extends TranslatedRootElement,
TTranslatedGlobalOrNamespaceVarInit, InitializationContext { TTranslatedGlobalOrNamespaceVarInit, InitializationContext
{
GlobalOrNamespaceVariable var; GlobalOrNamespaceVariable var;
TranslatedGlobalOrNamespaceVarInit() { this = TTranslatedGlobalOrNamespaceVarInit(var) } TranslatedGlobalOrNamespaceVarInit() { this = TTranslatedGlobalOrNamespaceVarInit(var) }

View File

@@ -440,7 +440,8 @@ class TranslatedStringLiteralInitialization extends TranslatedDirectInitializati
} }
class TranslatedConstructorInitialization extends TranslatedDirectInitialization, class TranslatedConstructorInitialization extends TranslatedDirectInitialization,
StructorCallContext { StructorCallContext
{
override ConstructorCall expr; override ConstructorCall expr;
override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) {
@@ -528,7 +529,8 @@ abstract class TranslatedFieldInitialization extends TranslatedElement {
* explicit element in an initializer list. * explicit element in an initializer list.
*/ */
class TranslatedExplicitFieldInitialization extends TranslatedFieldInitialization, class TranslatedExplicitFieldInitialization extends TranslatedFieldInitialization,
InitializationContext, TTranslatedExplicitFieldInitialization { InitializationContext, TTranslatedExplicitFieldInitialization
{
Expr expr; Expr expr;
TranslatedExplicitFieldInitialization() { TranslatedExplicitFieldInitialization() {
@@ -565,7 +567,8 @@ private string getZeroValue(Type type) {
* corresponding element in the initializer list. * corresponding element in the initializer list.
*/ */
class TranslatedFieldValueInitialization extends TranslatedFieldInitialization, class TranslatedFieldValueInitialization extends TranslatedFieldInitialization,
TTranslatedFieldValueInitialization { TTranslatedFieldValueInitialization
{
TranslatedFieldValueInitialization() { this = TTranslatedFieldValueInitialization(ast, field) } TranslatedFieldValueInitialization() { this = TTranslatedFieldValueInitialization(ast, field) }
override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) { override predicate hasInstruction(Opcode opcode, InstructionTag tag, CppType resultType) {
@@ -700,7 +703,8 @@ abstract class TranslatedElementInitialization extends TranslatedElement {
* an explicit element in an initializer list. * an explicit element in an initializer list.
*/ */
class TranslatedExplicitElementInitialization extends TranslatedElementInitialization, class TranslatedExplicitElementInitialization extends TranslatedElementInitialization,
TTranslatedExplicitElementInitialization, InitializationContext { TTranslatedExplicitElementInitialization, InitializationContext
{
int elementIndex; int elementIndex;
TranslatedExplicitElementInitialization() { TranslatedExplicitElementInitialization() {
@@ -737,7 +741,8 @@ class TranslatedExplicitElementInitialization extends TranslatedElementInitializ
* elements without corresponding elements in the initializer list. * elements without corresponding elements in the initializer list.
*/ */
class TranslatedElementValueInitialization extends TranslatedElementInitialization, class TranslatedElementValueInitialization extends TranslatedElementInitialization,
TTranslatedElementValueInitialization { TTranslatedElementValueInitialization
{
int elementIndex; int elementIndex;
int elementCount; int elementCount;
@@ -881,7 +886,8 @@ abstract class TranslatedBaseStructorCall extends TranslatedStructorCallFromStru
* Represents a call to a delegating or base class constructor from within a constructor. * Represents a call to a delegating or base class constructor from within a constructor.
*/ */
abstract class TranslatedConstructorCallFromConstructor extends TranslatedStructorCallFromStructor, abstract class TranslatedConstructorCallFromConstructor extends TranslatedStructorCallFromStructor,
TTranslatedConstructorBaseInit { TTranslatedConstructorBaseInit
{
TranslatedConstructorCallFromConstructor() { this = TTranslatedConstructorBaseInit(call) } TranslatedConstructorCallFromConstructor() { this = TTranslatedConstructorBaseInit(call) }
} }
@@ -917,7 +923,8 @@ class TranslatedConstructorDelegationInit extends TranslatedConstructorCallFromC
* derived class constructor * derived class constructor
*/ */
class TranslatedConstructorBaseInit extends TranslatedConstructorCallFromConstructor, class TranslatedConstructorBaseInit extends TranslatedConstructorCallFromConstructor,
TranslatedBaseStructorCall { TranslatedBaseStructorCall
{
TranslatedConstructorBaseInit() { not call instanceof ConstructorDelegationInit } TranslatedConstructorBaseInit() { not call instanceof ConstructorDelegationInit }
final override string toString() { result = "construct base: " + call.toString() } final override string toString() { result = "construct base: " + call.toString() }
@@ -934,7 +941,8 @@ TranslatedDestructorBaseDestruction getTranslatedDestructorBaseDestruction(
* derived class destructor. * derived class destructor.
*/ */
class TranslatedDestructorBaseDestruction extends TranslatedBaseStructorCall, class TranslatedDestructorBaseDestruction extends TranslatedBaseStructorCall,
TTranslatedDestructorBaseDestruction { TTranslatedDestructorBaseDestruction
{
TranslatedDestructorBaseDestruction() { this = TTranslatedDestructorBaseDestruction(call) } TranslatedDestructorBaseDestruction() { this = TTranslatedDestructorBaseDestruction(call) }
final override string toString() { result = "destroy base: " + call.toString() } final override string toString() { result = "destroy base: " + call.toString() }

View File

@@ -20,7 +20,8 @@ TranslatedMicrosoftTryExceptHandler getTranslatedMicrosoftTryExceptHandler(
} }
class TranslatedMicrosoftTryExceptHandler extends TranslatedElement, class TranslatedMicrosoftTryExceptHandler extends TranslatedElement,
TTranslatedMicrosoftTryExceptHandler { TTranslatedMicrosoftTryExceptHandler
{
MicrosoftTryExceptStmt tryExcept; MicrosoftTryExceptStmt tryExcept;
TranslatedMicrosoftTryExceptHandler() { this = TTranslatedMicrosoftTryExceptHandler(tryExcept) } TranslatedMicrosoftTryExceptHandler() { this = TTranslatedMicrosoftTryExceptHandler(tryExcept) }

View File

@@ -389,7 +389,8 @@ private class NewArrayAllocationExpr extends AllocationExpr, NewArrayExpr {
private module HeuristicAllocation { private module HeuristicAllocation {
/** A class that maps an `AllocationExpr` to an `HeuristicAllocationExpr`. */ /** A class that maps an `AllocationExpr` to an `HeuristicAllocationExpr`. */
private class HeuristicAllocationModeled extends HeuristicAllocationExpr instanceof AllocationExpr { private class HeuristicAllocationModeled extends HeuristicAllocationExpr instanceof AllocationExpr
{
override Expr getSizeExpr() { result = AllocationExpr.super.getSizeExpr() } override Expr getSizeExpr() { result = AllocationExpr.super.getSizeExpr() }
override int getSizeMult() { result = AllocationExpr.super.getSizeMult() } override int getSizeMult() { result = AllocationExpr.super.getSizeMult() }
@@ -406,7 +407,8 @@ private module HeuristicAllocation {
} }
/** A class that maps an `AllocationFunction` to an `HeuristicAllocationFunction`. */ /** A class that maps an `AllocationFunction` to an `HeuristicAllocationFunction`. */
private class HeuristicAllocationFunctionModeled extends HeuristicAllocationFunction instanceof AllocationFunction { private class HeuristicAllocationFunctionModeled extends HeuristicAllocationFunction instanceof AllocationFunction
{
override int getSizeArg() { result = AllocationFunction.super.getSizeArg() } override int getSizeArg() { result = AllocationFunction.super.getSizeArg() }
override int getSizeMult() { result = AllocationFunction.super.getSizeMult() } override int getSizeMult() { result = AllocationFunction.super.getSizeMult() }
@@ -430,7 +432,8 @@ private module HeuristicAllocation {
* 2. The function must return a pointer type * 2. The function must return a pointer type
* 3. There must be a unique parameter of unsigned integral type. * 3. There must be a unique parameter of unsigned integral type.
*/ */
private class HeuristicAllocationFunctionByName extends HeuristicAllocationFunction instanceof Function { private class HeuristicAllocationFunctionByName extends HeuristicAllocationFunction instanceof Function
{
int sizeArg; int sizeArg;
HeuristicAllocationFunctionByName() { HeuristicAllocationFunctionByName() {

View File

@@ -7,7 +7,8 @@ import semmle.code.cpp.models.interfaces.FlowSource
* The standard functions `getdelim`, `getwdelim` and the glibc variant `__getdelim`. * The standard functions `getdelim`, `getwdelim` and the glibc variant `__getdelim`.
*/ */
private class GetDelimFunction extends TaintFunction, AliasFunction, SideEffectFunction, private class GetDelimFunction extends TaintFunction, AliasFunction, SideEffectFunction,
RemoteFlowSourceFunction { RemoteFlowSourceFunction
{
GetDelimFunction() { this.hasGlobalName(["getdelim", "getwdelim", "__getdelim"]) } GetDelimFunction() { this.hasGlobalName(["getdelim", "getwdelim", "__getdelim"]) }
override predicate hasTaintFlow(FunctionInput i, FunctionOutput o) { override predicate hasTaintFlow(FunctionInput i, FunctionOutput o) {

View File

@@ -14,7 +14,8 @@ import semmle.code.cpp.models.interfaces.FlowSource
* The standard functions `fgets` and `fgetws`. * The standard functions `fgets` and `fgetws`.
*/ */
private class FgetsFunction extends DataFlowFunction, TaintFunction, ArrayFunction, AliasFunction, private class FgetsFunction extends DataFlowFunction, TaintFunction, ArrayFunction, AliasFunction,
SideEffectFunction, RemoteFlowSourceFunction { SideEffectFunction, RemoteFlowSourceFunction
{
FgetsFunction() { FgetsFunction() {
// fgets(str, num, stream) // fgets(str, num, stream)
// fgetws(wstr, num, stream) // fgetws(wstr, num, stream)
@@ -69,7 +70,8 @@ private class FgetsFunction extends DataFlowFunction, TaintFunction, ArrayFuncti
* The standard functions `gets`. * The standard functions `gets`.
*/ */
private class GetsFunction extends DataFlowFunction, ArrayFunction, AliasFunction, private class GetsFunction extends DataFlowFunction, ArrayFunction, AliasFunction,
SideEffectFunction, LocalFlowSourceFunction { SideEffectFunction, LocalFlowSourceFunction
{
GetsFunction() { GetsFunction() {
// gets(str) // gets(str)
this.hasGlobalOrStdOrBslName("gets") this.hasGlobalOrStdOrBslName("gets")

View File

@@ -7,7 +7,8 @@ import semmle.code.cpp.models.interfaces.SideEffect
* The standard function templates `std::move` and `std::forward`. * The standard function templates `std::move` and `std::forward`.
*/ */
private class IdentityFunction extends DataFlowFunction, SideEffectFunction, AliasFunction, private class IdentityFunction extends DataFlowFunction, SideEffectFunction, AliasFunction,
FunctionTemplateInstantiation { FunctionTemplateInstantiation
{
IdentityFunction() { this.hasQualifiedName("std", ["move", "forward"]) } IdentityFunction() { this.hasQualifiedName("std", ["move", "forward"]) }
override predicate hasOnlySpecificReadSideEffects() { any() } override predicate hasOnlySpecificReadSideEffects() { any() }

View File

@@ -121,7 +121,8 @@ class IteratorCrementNonMemberOperator extends Operator {
} }
private class IteratorCrementNonMemberOperatorModel extends IteratorCrementNonMemberOperator, private class IteratorCrementNonMemberOperatorModel extends IteratorCrementNonMemberOperator,
DataFlowFunction { DataFlowFunction
{
override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { override predicate hasDataFlow(FunctionInput input, FunctionOutput output) {
input = getIteratorArgumentInput(this, 0) and input = getIteratorArgumentInput(this, 0) and
output.isReturnValue() output.isReturnValue()
@@ -143,7 +144,8 @@ class IteratorCrementMemberOperator extends MemberFunction {
} }
private class IteratorCrementMemberOperatorModel extends IteratorCrementMemberOperator, private class IteratorCrementMemberOperatorModel extends IteratorCrementMemberOperator,
DataFlowFunction, TaintFunction { DataFlowFunction, TaintFunction
{
override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { override predicate hasDataFlow(FunctionInput input, FunctionOutput output) {
input.isQualifierAddress() and input.isQualifierAddress() and
output.isReturnValue() output.isReturnValue()
@@ -204,7 +206,8 @@ class IteratorBinaryArithmeticMemberOperator extends MemberFunction {
} }
private class IteratorBinaryArithmeticMemberOperatorModel extends IteratorBinaryArithmeticMemberOperator, private class IteratorBinaryArithmeticMemberOperatorModel extends IteratorBinaryArithmeticMemberOperator,
TaintFunction { TaintFunction
{
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
input.isQualifierObject() and input.isQualifierObject() and
output.isReturnValue() output.isReturnValue()
@@ -258,7 +261,8 @@ class IteratorAssignArithmeticNonMemberOperator extends Operator {
} }
private class IteratorAssignArithmeticNonMemberOperatorModel extends IteratorAssignArithmeticNonMemberOperator, private class IteratorAssignArithmeticNonMemberOperatorModel extends IteratorAssignArithmeticNonMemberOperator,
DataFlowFunction, TaintFunction { DataFlowFunction, TaintFunction
{
override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { override predicate hasDataFlow(FunctionInput input, FunctionOutput output) {
input.isParameter(0) and input.isParameter(0) and
output.isReturnValue() output.isReturnValue()
@@ -289,7 +293,8 @@ class IteratorAssignArithmeticMemberOperator extends MemberFunction {
} }
private class IteratorAssignArithmeticMemberOperatorModel extends IteratorAssignArithmeticMemberOperator, private class IteratorAssignArithmeticMemberOperatorModel extends IteratorAssignArithmeticMemberOperator,
DataFlowFunction, TaintFunction { DataFlowFunction, TaintFunction
{
override predicate hasDataFlow(FunctionInput input, FunctionOutput output) { override predicate hasDataFlow(FunctionInput input, FunctionOutput output) {
input.isQualifierAddress() and input.isQualifierAddress() and
output.isReturnValue() output.isReturnValue()
@@ -325,7 +330,8 @@ class IteratorAssignArithmeticOperator extends Function {
* non-member and member versions, use `IteratorPointerDereferenceOperator`. * non-member and member versions, use `IteratorPointerDereferenceOperator`.
*/ */
class IteratorPointerDereferenceMemberOperator extends MemberFunction, TaintFunction, class IteratorPointerDereferenceMemberOperator extends MemberFunction, TaintFunction,
IteratorReferenceFunction { IteratorReferenceFunction
{
IteratorPointerDereferenceMemberOperator() { IteratorPointerDereferenceMemberOperator() {
this.getClassAndName("operator*") instanceof Iterator this.getClassAndName("operator*") instanceof Iterator
} }
@@ -353,7 +359,8 @@ class IteratorPointerDereferenceNonMemberOperator extends Operator, IteratorRefe
} }
private class IteratorPointerDereferenceNonMemberOperatorModel extends IteratorPointerDereferenceNonMemberOperator, private class IteratorPointerDereferenceNonMemberOperatorModel extends IteratorPointerDereferenceNonMemberOperator,
TaintFunction { TaintFunction
{
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
input = getIteratorArgumentInput(this, 0) and input = getIteratorArgumentInput(this, 0) and
output.isReturnValue() output.isReturnValue()
@@ -389,7 +396,8 @@ private class IteratorFieldMemberOperator extends Operator, TaintFunction {
* An `operator[]` member function of an iterator class. * An `operator[]` member function of an iterator class.
*/ */
private class IteratorArrayMemberOperator extends MemberFunction, TaintFunction, private class IteratorArrayMemberOperator extends MemberFunction, TaintFunction,
IteratorReferenceFunction { IteratorReferenceFunction
{
IteratorArrayMemberOperator() { this.getClassAndName("operator[]") instanceof Iterator } IteratorArrayMemberOperator() { this.getClassAndName("operator[]") instanceof Iterator }
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
@@ -418,7 +426,8 @@ class IteratorAssignmentMemberOperator extends MemberFunction {
* `operator*` and use their own `operator=` to assign to the container. * `operator*` and use their own `operator=` to assign to the container.
*/ */
private class IteratorAssignmentMemberOperatorModel extends IteratorAssignmentMemberOperator, private class IteratorAssignmentMemberOperatorModel extends IteratorAssignmentMemberOperator,
TaintFunction { TaintFunction
{
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) { override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
input.isParameterDeref(0) and input.isParameterDeref(0) and
output.isQualifierObject() output.isQualifierObject()

View File

@@ -15,7 +15,8 @@ import semmle.code.cpp.models.interfaces.Taint
* `__builtin___memcpy_chk`. * `__builtin___memcpy_chk`.
*/ */
private class MemcpyFunction extends ArrayFunction, DataFlowFunction, SideEffectFunction, private class MemcpyFunction extends ArrayFunction, DataFlowFunction, SideEffectFunction,
AliasFunction { AliasFunction
{
MemcpyFunction() { MemcpyFunction() {
// memcpy(dest, src, num) // memcpy(dest, src, num)
// memmove(dest, src, num) // memmove(dest, src, num)

View File

@@ -13,7 +13,8 @@ import semmle.code.cpp.models.interfaces.SideEffect
* The standard function `memset` and its assorted variants * The standard function `memset` and its assorted variants
*/ */
private class MemsetFunction extends ArrayFunction, DataFlowFunction, AliasFunction, private class MemsetFunction extends ArrayFunction, DataFlowFunction, AliasFunction,
SideEffectFunction { SideEffectFunction
{
MemsetFunction() { MemsetFunction() {
this.hasGlobalOrStdOrBslName("memset") this.hasGlobalOrStdOrBslName("memset")
or or

View File

@@ -8,7 +8,8 @@ import semmle.code.cpp.models.interfaces.SideEffect
* guaranteed to be side-effect free. * guaranteed to be side-effect free.
*/ */
private class PureStrFunction extends AliasFunction, ArrayFunction, TaintFunction, private class PureStrFunction extends AliasFunction, ArrayFunction, TaintFunction,
SideEffectFunction { SideEffectFunction
{
PureStrFunction() { PureStrFunction() {
this.hasGlobalOrStdOrBslName([ this.hasGlobalOrStdOrBslName([
atoi(), "strcasestr", "strchnul", "strchr", "strchrnul", "strstr", "strpbrk", "strrchr", atoi(), "strcasestr", "strchnul", "strchr", "strchrnul", "strstr", "strpbrk", "strrchr",
@@ -153,7 +154,8 @@ private class PureFunction extends TaintFunction, SideEffectFunction {
* evaluation is guaranteed to be side-effect free. * evaluation is guaranteed to be side-effect free.
*/ */
private class PureMemFunction extends AliasFunction, ArrayFunction, TaintFunction, private class PureMemFunction extends AliasFunction, ArrayFunction, TaintFunction,
SideEffectFunction { SideEffectFunction
{
PureMemFunction() { PureMemFunction() {
this.hasGlobalOrStdOrBslName([ this.hasGlobalOrStdOrBslName([
"memchr", "__builtin_memchr", "memrchr", "rawmemchr", "memcmp", "__builtin_memcmp", "memmem" "memchr", "__builtin_memchr", "memrchr", "rawmemchr", "memcmp", "__builtin_memcmp", "memmem"

View File

@@ -11,7 +11,8 @@ import semmle.code.cpp.models.interfaces.SideEffect
/** The function `recv` and its assorted variants */ /** The function `recv` and its assorted variants */
private class Recv extends AliasFunction, ArrayFunction, SideEffectFunction, private class Recv extends AliasFunction, ArrayFunction, SideEffectFunction,
RemoteFlowSourceFunction { RemoteFlowSourceFunction
{
Recv() { Recv() {
this.hasGlobalName([ this.hasGlobalName([
"recv", // recv(socket, dest, len, flags) "recv", // recv(socket, dest, len, flags)

View File

@@ -15,7 +15,8 @@ import semmle.code.cpp.models.interfaces.FlowSource
* The `scanf` family of functions. * The `scanf` family of functions.
*/ */
abstract private class ScanfFunctionModel extends ArrayFunction, TaintFunction, AliasFunction, abstract private class ScanfFunctionModel extends ArrayFunction, TaintFunction, AliasFunction,
SideEffectFunction { SideEffectFunction
{
override predicate hasArrayWithNullTerminator(int bufParam) { override predicate hasArrayWithNullTerminator(int bufParam) {
bufParam = this.(ScanfFunction).getFormatParameterIndex() bufParam = this.(ScanfFunction).getFormatParameterIndex()
} }

View File

@@ -29,7 +29,8 @@ private class SmartPtr extends Class, PointerWrapper {
* - `std::weak_ptr<T>::operator*()` * - `std::weak_ptr<T>::operator*()`
*/ */
private class PointerUnwrapperFunction extends MemberFunction, TaintFunction, DataFlowFunction, private class PointerUnwrapperFunction extends MemberFunction, TaintFunction, DataFlowFunction,
SideEffectFunction, AliasFunction { SideEffectFunction, AliasFunction
{
PointerUnwrapperFunction() { PointerUnwrapperFunction() {
exists(PointerWrapper wrapper | wrapper.getAnUnwrapperFunction() = this) exists(PointerWrapper wrapper | wrapper.getAnUnwrapperFunction() = this)
} }

View File

@@ -13,7 +13,8 @@ import semmle.code.cpp.models.interfaces.SideEffect
* The standard function `strset` and its assorted variants * The standard function `strset` and its assorted variants
*/ */
private class StrsetFunction extends ArrayFunction, DataFlowFunction, AliasFunction, private class StrsetFunction extends ArrayFunction, DataFlowFunction, AliasFunction,
SideEffectFunction { SideEffectFunction
{
StrsetFunction() { StrsetFunction() {
hasGlobalName([ hasGlobalName([
"strset", "_strset", "_strset_l", "_wcsset", "_wcsset_l", "_mbsset", "_mbsset_l", "strset", "_strset", "_strset_l", "_wcsset", "_wcsset_l", "_mbsset", "_mbsset_l",

View File

@@ -7,7 +7,8 @@ import semmle.code.cpp.models.interfaces.CommandExecution
* A function for running a command using a command interpreter. * A function for running a command using a command interpreter.
*/ */
private class SystemFunction extends CommandExecutionFunction, ArrayFunction, AliasFunction, private class SystemFunction extends CommandExecutionFunction, ArrayFunction, AliasFunction,
SideEffectFunction { SideEffectFunction
{
SystemFunction() { SystemFunction() {
hasGlobalOrStdName("system") or // system(command) hasGlobalOrStdName("system") or // system(command)
hasGlobalName("popen") or // popen(command, mode) hasGlobalName("popen") or // popen(command, mode)

View File

@@ -591,7 +591,8 @@ deprecated library class DataSensitiveExprCall extends DataSensitiveCallExpr, Ex
/** Call to a virtual function. */ /** Call to a virtual function. */
deprecated library class DataSensitiveOverriddenFunctionCall extends DataSensitiveCallExpr, deprecated library class DataSensitiveOverriddenFunctionCall extends DataSensitiveCallExpr,
FunctionCall { FunctionCall
{
DataSensitiveOverriddenFunctionCall() { DataSensitiveOverriddenFunctionCall() {
exists(getTarget().(VirtualFunction).getAnOverridingFunction()) exists(getTarget().(VirtualFunction).getAnOverridingFunction())
} }

View File

@@ -67,7 +67,8 @@ class MethodImplementation extends EntryPoint, @cil_method_implementation {
* destructors, operators, accessors and so on. * destructors, operators, accessors and so on.
*/ */
class Method extends DotNet::Callable, Element, Member, TypeContainer, DataFlowNode, class Method extends DotNet::Callable, Element, Member, TypeContainer, DataFlowNode,
CustomModifierReceiver, Parameterizable, @cil_method { CustomModifierReceiver, Parameterizable, @cil_method
{
/** /**
* Gets a method implementation, if any. Note that there can * Gets a method implementation, if any. Note that there can
* be several implementations in different assemblies. * be several implementations in different assemblies.

View File

@@ -302,7 +302,8 @@ class SystemType extends ValueOrRefType {
* ``` * ```
*/ */
class FunctionPointerType extends Type, CustomModifierReceiver, Parameterizable, class FunctionPointerType extends Type, CustomModifierReceiver, Parameterizable,
@cil_function_pointer_type { @cil_function_pointer_type
{
/** Gets the return type of this function pointer. */ /** Gets the return type of this function pointer. */
Type getReturnType() { cil_function_pointer_return_type(this, result) } Type getReturnType() { cil_function_pointer_return_type(this, result) }

View File

@@ -15,7 +15,8 @@ private import TypeRef
* (`Property`), or an indexer (`Indexer`). * (`Property`), or an indexer (`Indexer`).
*/ */
class DeclarationWithAccessors extends AssignableMember, Virtualizable, Attributable, class DeclarationWithAccessors extends AssignableMember, Virtualizable, Attributable,
@declaration_with_accessors { @declaration_with_accessors
{
/** Gets an accessor of this declaration. */ /** Gets an accessor of this declaration. */
Accessor getAnAccessor() { result.getDeclaration() = this } Accessor getAnAccessor() { result.getDeclaration() = this }
@@ -49,7 +50,8 @@ class DeclarationWithAccessors extends AssignableMember, Virtualizable, Attribut
* property (`Property`) or an indexer (`Indexer`). * property (`Property`) or an indexer (`Indexer`).
*/ */
class DeclarationWithGetSetAccessors extends DeclarationWithAccessors, TopLevelExprParent, class DeclarationWithGetSetAccessors extends DeclarationWithAccessors, TopLevelExprParent,
@assignable_with_accessors { @assignable_with_accessors
{
/** Gets the `get` accessor of this declaration, if any. */ /** Gets the `get` accessor of this declaration, if any. */
Getter getGetter() { result = this.getAnAccessor() } Getter getGetter() { result = this.getAnAccessor() }

View File

@@ -90,7 +90,8 @@ class LocalScopeVariable extends Variable, @local_scope_variable {
* ``` * ```
*/ */
class Parameter extends DotNet::Parameter, LocalScopeVariable, Attributable, TopLevelExprParent, class Parameter extends DotNet::Parameter, LocalScopeVariable, Attributable, TopLevelExprParent,
@parameter { @parameter
{
/** /**
* Gets the position of this parameter. For example, the position of `x` is * Gets the position of this parameter. For example, the position of `x` is
* 0 and the position of `y` is 1 in * 0 and the position of `y` is 1 in
@@ -376,7 +377,8 @@ class LocalConstant extends LocalVariable, @local_constant {
* ``` * ```
*/ */
class Field extends Variable, AssignableMember, Attributable, TopLevelExprParent, DotNet::Field, class Field extends Variable, AssignableMember, Attributable, TopLevelExprParent, DotNet::Field,
@field { @field
{
/** /**
* Gets the initial value of this field, if any. For example, the initial * Gets the initial value of this field, if any. For example, the initial
* value of `F` on line 2 is `20` in * value of `F` on line 2 is `20` in

View File

@@ -172,7 +172,8 @@ private predicate isDoesNotReturnIfAttributeParameter(Parameter p, boolean value
* A method with a parameter that is annotated with * A method with a parameter that is annotated with
* `System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(false)`. * `System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(false)`.
*/ */
class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertTrueMethod extends BooleanAssertMethod { class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertTrueMethod extends BooleanAssertMethod
{
private int i_; private int i_;
SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertTrueMethod() { SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertTrueMethod() {
@@ -190,7 +191,8 @@ class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertTrueMethod exte
* A method with a parameter that is annotated with * A method with a parameter that is annotated with
* `System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(true)`. * `System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(true)`.
*/ */
class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertFalseMethod extends BooleanAssertMethod { class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertFalseMethod extends BooleanAssertMethod
{
private int i_; private int i_;
SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertFalseMethod() { SystemDiagnosticsCodeAnalysisDoesNotReturnIfAnnotatedAssertFalseMethod() {

View File

@@ -143,7 +143,8 @@ private class RecordConstructorFlow extends SummarizedCallable {
class RequiredSummaryComponentStack = Impl::Public::RequiredSummaryComponentStack; class RequiredSummaryComponentStack = Impl::Public::RequiredSummaryComponentStack;
private class RecordConstructorFlowRequiredSummaryComponentStack extends RequiredSummaryComponentStack { private class RecordConstructorFlowRequiredSummaryComponentStack extends RequiredSummaryComponentStack
{
override predicate required(SummaryComponent head, SummaryComponentStack tail) { override predicate required(SummaryComponent head, SummaryComponentStack tail) {
exists(Property p | exists(Property p |
recordConstructorFlow(_, _, p) and recordConstructorFlow(_, _, p) and

View File

@@ -110,7 +110,8 @@ module Ssa {
/** A plain field or property. */ /** A plain field or property. */
class PlainFieldOrPropSourceVariable extends FieldOrPropSourceVariable, class PlainFieldOrPropSourceVariable extends FieldOrPropSourceVariable,
SsaImpl::TPlainFieldOrProp { SsaImpl::TPlainFieldOrProp
{
override Callable getEnclosingCallable() { this = SsaImpl::TPlainFieldOrProp(result, _) } override Callable getEnclosingCallable() { this = SsaImpl::TPlainFieldOrProp(result, _) }
override string toString() { override string toString() {
@@ -127,7 +128,8 @@ module Ssa {
/** A qualified field or property. */ /** A qualified field or property. */
class QualifiedFieldOrPropSourceVariable extends FieldOrPropSourceVariable, class QualifiedFieldOrPropSourceVariable extends FieldOrPropSourceVariable,
SsaImpl::TQualifiedFieldOrProp { SsaImpl::TQualifiedFieldOrProp
{
override Callable getEnclosingCallable() { override Callable getEnclosingCallable() {
this = SsaImpl::TQualifiedFieldOrProp(result, _, _) this = SsaImpl::TQualifiedFieldOrProp(result, _, _)
} }

View File

@@ -1215,7 +1215,8 @@ private module ArgumentNodes {
* ``` * ```
*/ */
class ImplicitCapturedArgumentNode extends ArgumentNodeImpl, NodeImpl, class ImplicitCapturedArgumentNode extends ArgumentNodeImpl, NodeImpl,
TImplicitCapturedArgumentNode { TImplicitCapturedArgumentNode
{
private LocalScopeVariable v; private LocalScopeVariable v;
private ControlFlow::Nodes::ElementNode cfn; private ControlFlow::Nodes::ElementNode cfn;
@@ -2034,7 +2035,8 @@ private module PostUpdateNodes {
* a pre-update node for the `ObjectCreationNode`. * a pre-update node for the `ObjectCreationNode`.
*/ */
class ObjectInitializerNode extends PostUpdateNode, NodeImpl, ArgumentNodeImpl, class ObjectInitializerNode extends PostUpdateNode, NodeImpl, ArgumentNodeImpl,
TObjectInitializerNode { TObjectInitializerNode
{
private ObjectCreation oc; private ObjectCreation oc;
private ControlFlow::Nodes::ElementNode cfn; private ControlFlow::Nodes::ElementNode cfn;

View File

@@ -7,7 +7,8 @@ import TaintTrackingParameter::Public
private import TaintTrackingParameter::Private private import TaintTrackingParameter::Private
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements
DataFlowInternal::FullStateConfigSig { DataFlowInternal::FullStateConfigSig
{
import Config import Config
predicate isBarrier(DataFlow::Node node) { predicate isBarrier(DataFlow::Node node) {

View File

@@ -1115,7 +1115,8 @@ private module Internal {
/** A call using reflection. */ /** A call using reflection. */
private class DispatchReflectionCall extends DispatchReflectionOrDynamicCall, private class DispatchReflectionCall extends DispatchReflectionOrDynamicCall,
TDispatchReflectionCall { TDispatchReflectionCall
{
override MethodCall getCall() { this = TDispatchReflectionCall(result, _, _, _, _) } override MethodCall getCall() { this = TDispatchReflectionCall(result, _, _, _, _) }
override string getName() { this = TDispatchReflectionCall(_, result, _, _, _) } override string getName() { this = TDispatchReflectionCall(_, result, _, _, _) }
@@ -1163,7 +1164,8 @@ private module Internal {
/** A method call using dynamic types. */ /** A method call using dynamic types. */
private class DispatchDynamicMethodCall extends DispatchReflectionOrDynamicCall, private class DispatchDynamicMethodCall extends DispatchReflectionOrDynamicCall,
TDispatchDynamicMethodCall { TDispatchDynamicMethodCall
{
override DynamicMethodCall getCall() { this = TDispatchDynamicMethodCall(result) } override DynamicMethodCall getCall() { this = TDispatchDynamicMethodCall(result) }
override string getName() { result = this.getCall().getLateBoundTargetName() } override string getName() { result = this.getCall().getLateBoundTargetName() }
@@ -1184,7 +1186,8 @@ private module Internal {
/** An operator call using dynamic types. */ /** An operator call using dynamic types. */
private class DispatchDynamicOperatorCall extends DispatchReflectionOrDynamicCall, private class DispatchDynamicOperatorCall extends DispatchReflectionOrDynamicCall,
TDispatchDynamicOperatorCall { TDispatchDynamicOperatorCall
{
override DynamicOperatorCall getCall() { this = TDispatchDynamicOperatorCall(result) } override DynamicOperatorCall getCall() { this = TDispatchDynamicOperatorCall(result) }
override string getName() { override string getName() {
@@ -1201,7 +1204,8 @@ private module Internal {
/** A (potential) call to a property accessor using dynamic types. */ /** A (potential) call to a property accessor using dynamic types. */
private class DispatchDynamicMemberAccess extends DispatchReflectionOrDynamicCall, private class DispatchDynamicMemberAccess extends DispatchReflectionOrDynamicCall,
TDispatchDynamicMemberAccess { TDispatchDynamicMemberAccess
{
override DynamicMemberAccess getCall() { this = TDispatchDynamicMemberAccess(result) } override DynamicMemberAccess getCall() { this = TDispatchDynamicMemberAccess(result) }
override string getName() { override string getName() {
@@ -1225,7 +1229,8 @@ private module Internal {
/** A (potential) call to an indexer accessor using dynamic types. */ /** A (potential) call to an indexer accessor using dynamic types. */
private class DispatchDynamicElementAccess extends DispatchReflectionOrDynamicCall, private class DispatchDynamicElementAccess extends DispatchReflectionOrDynamicCall,
TDispatchDynamicElementAccess { TDispatchDynamicElementAccess
{
override DynamicElementAccess getCall() { this = TDispatchDynamicElementAccess(result) } override DynamicElementAccess getCall() { this = TDispatchDynamicElementAccess(result) }
override string getName() { override string getName() {
@@ -1251,7 +1256,8 @@ private module Internal {
/** A (potential) call to an event accessor using dynamic types. */ /** A (potential) call to an event accessor using dynamic types. */
private class DispatchDynamicEventAccess extends DispatchReflectionOrDynamicCall, private class DispatchDynamicEventAccess extends DispatchReflectionOrDynamicCall,
TDispatchDynamicEventAccess { TDispatchDynamicEventAccess
{
override AssignArithmeticOperation getCall() { override AssignArithmeticOperation getCall() {
this = TDispatchDynamicEventAccess(result, _, _) this = TDispatchDynamicEventAccess(result, _, _)
} }
@@ -1268,7 +1274,8 @@ private module Internal {
/** A call to a constructor using dynamic types. */ /** A call to a constructor using dynamic types. */
private class DispatchDynamicObjectCreation extends DispatchReflectionOrDynamicCall, private class DispatchDynamicObjectCreation extends DispatchReflectionOrDynamicCall,
TDispatchDynamicObjectCreation { TDispatchDynamicObjectCreation
{
override DynamicObjectCreation getCall() { this = TDispatchDynamicObjectCreation(result) } override DynamicObjectCreation getCall() { this = TDispatchDynamicObjectCreation(result) }
override string getName() { none() } override string getName() { none() }

View File

@@ -190,7 +190,8 @@ class DynamicAccess extends DynamicExpr {
* property, or an event). * property, or an event).
*/ */
class DynamicMemberAccess extends DynamicAccess, MemberAccess, AssignableAccess, class DynamicMemberAccess extends DynamicAccess, MemberAccess, AssignableAccess,
@dynamic_member_access_expr { @dynamic_member_access_expr
{
override string toString() { override string toString() {
result = "dynamic access to member " + this.getLateBoundTargetName() result = "dynamic access to member " + this.getLateBoundTargetName()
} }

View File

@@ -432,7 +432,8 @@ module EntityFramework {
} }
} }
private class DbContextSaveChangesRequiredSummaryComponentStack extends RequiredSummaryComponentStack { private class DbContextSaveChangesRequiredSummaryComponentStack extends RequiredSummaryComponentStack
{
override predicate required(SummaryComponent head, SummaryComponentStack tail) { override predicate required(SummaryComponent head, SummaryComponentStack tail) {
exists(Content c | head = SummaryComponent::content(c) | exists(Content c | head = SummaryComponent::content(c) |
any(DbContextClass cls).requiresComponentStackIn(c, _, tail, _) any(DbContextClass cls).requiresComponentStackIn(c, _, tail, _)

View File

@@ -74,7 +74,8 @@ class SystemDiagnosticsProcessClass extends SystemDiagnosticsClass {
} }
/** The `System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute` class. */ /** The `System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute` class. */
class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAttributeClass extends SystemDiagnosticsCodeAnalysisClass { class SystemDiagnosticsCodeAnalysisDoesNotReturnIfAttributeClass extends SystemDiagnosticsCodeAnalysisClass
{
SystemDiagnosticsCodeAnalysisDoesNotReturnIfAttributeClass() { SystemDiagnosticsCodeAnalysisDoesNotReturnIfAttributeClass() {
this.hasName("DoesNotReturnIfAttribute") this.hasName("DoesNotReturnIfAttribute")
} }

View File

@@ -33,7 +33,8 @@ class SystemCollectionsGenericUnboundGenericStruct extends UnboundGenericStruct
} }
/** The `System.Collections.Generic.IComparer<>` interface. */ /** The `System.Collections.Generic.IComparer<>` interface. */
class SystemCollectionsGenericIComparerTInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericIComparerTInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericIComparerTInterface() { this.hasName("IComparer<>") } SystemCollectionsGenericIComparerTInterface() { this.hasName("IComparer<>") }
/** Gets the `int Compare(T, T)` method. */ /** Gets the `int Compare(T, T)` method. */
@@ -48,7 +49,8 @@ class SystemCollectionsGenericIComparerTInterface extends SystemCollectionsGener
} }
/** The `System.Collections.Generic.IEqualityComparer<>` interface. */ /** The `System.Collections.Generic.IEqualityComparer<>` interface. */
class SystemCollectionsGenericIEqualityComparerTInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericIEqualityComparerTInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericIEqualityComparerTInterface() { this.hasName("IEqualityComparer<>") } SystemCollectionsGenericIEqualityComparerTInterface() { this.hasName("IEqualityComparer<>") }
/** Gets the `bool Equals(T, T)` method. */ /** Gets the `bool Equals(T, T)` method. */
@@ -63,7 +65,8 @@ class SystemCollectionsGenericIEqualityComparerTInterface extends SystemCollecti
} }
/** The `System.Collections.Generic.IEnumerable<>` interface. */ /** The `System.Collections.Generic.IEnumerable<>` interface. */
class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericIEnumerableTInterface() { SystemCollectionsGenericIEnumerableTInterface() {
this.hasName("IEnumerable<>") and this.hasName("IEnumerable<>") and
this.getNumberOfTypeParameters() = 1 this.getNumberOfTypeParameters() = 1
@@ -71,7 +74,8 @@ class SystemCollectionsGenericIEnumerableTInterface extends SystemCollectionsGen
} }
/** The `System.Collections.Generic.IEnumerator<>` interface. */ /** The `System.Collections.Generic.IEnumerator<>` interface. */
class SystemCollectionsGenericIEnumeratorInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericIEnumeratorInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericIEnumeratorInterface() { SystemCollectionsGenericIEnumeratorInterface() {
this.hasName("IEnumerator<>") and this.hasName("IEnumerator<>") and
this.getNumberOfTypeParameters() = 1 this.getNumberOfTypeParameters() = 1
@@ -86,7 +90,8 @@ class SystemCollectionsGenericIEnumeratorInterface extends SystemCollectionsGene
} }
/** The `System.Collections.Generic.IList<>` interface. */ /** The `System.Collections.Generic.IList<>` interface. */
class SystemCollectionsGenericIListTInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericIListTInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericIListTInterface() { SystemCollectionsGenericIListTInterface() {
this.hasName("IList<>") and this.hasName("IList<>") and
this.getNumberOfTypeParameters() = 1 this.getNumberOfTypeParameters() = 1
@@ -102,7 +107,8 @@ class SystemCollectionsGenericListClass extends SystemCollectionsGenericUnboundG
} }
/** The `System.Collections.Generic.KeyValuePair<,>` structure. */ /** The `System.Collections.Generic.KeyValuePair<,>` structure. */
class SystemCollectionsGenericKeyValuePairStruct extends SystemCollectionsGenericUnboundGenericStruct { class SystemCollectionsGenericKeyValuePairStruct extends SystemCollectionsGenericUnboundGenericStruct
{
SystemCollectionsGenericKeyValuePairStruct() { SystemCollectionsGenericKeyValuePairStruct() {
this.hasName("KeyValuePair<,>") and this.hasName("KeyValuePair<,>") and
this.getNumberOfTypeParameters() = 2 this.getNumberOfTypeParameters() = 2
@@ -124,7 +130,8 @@ class SystemCollectionsGenericKeyValuePairStruct extends SystemCollectionsGeneri
} }
/** The `System.Collections.Generic.ICollection<>` interface. */ /** The `System.Collections.Generic.ICollection<>` interface. */
class SystemCollectionsGenericICollectionInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericICollectionInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericICollectionInterface() { this.hasName("ICollection<>") } SystemCollectionsGenericICollectionInterface() { this.hasName("ICollection<>") }
/** Gets the `Count` property. */ /** Gets the `Count` property. */
@@ -138,12 +145,14 @@ class SystemCollectionsGenericICollectionInterface extends SystemCollectionsGene
} }
/** The `System.Collections.Generic.IList<>` interface. */ /** The `System.Collections.Generic.IList<>` interface. */
class SystemCollectionsGenericIListInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericIListInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericIListInterface() { this.hasName("IList<>") } SystemCollectionsGenericIListInterface() { this.hasName("IList<>") }
} }
/** The `System.Collections.Generic.IDictionary<>` interface. */ /** The `System.Collections.Generic.IDictionary<>` interface. */
class SystemCollectionsGenericIDictionaryInterface extends SystemCollectionsGenericUnboundGenericInterface { class SystemCollectionsGenericIDictionaryInterface extends SystemCollectionsGenericUnboundGenericInterface
{
SystemCollectionsGenericIDictionaryInterface() { SystemCollectionsGenericIDictionaryInterface() {
this.hasName("IDictionary<,>") and this.hasName("IDictionary<,>") and
this.getNumberOfTypeParameters() = 2 this.getNumberOfTypeParameters() = 2

View File

@@ -19,6 +19,7 @@ class SystemCollectionsSpecializedClass extends Class {
} }
/** The `System.Collections.Specialized.NameValueCollection` class. */ /** The `System.Collections.Specialized.NameValueCollection` class. */
class SystemCollectionsSpecializedNameValueCollectionClass extends SystemCollectionsSpecializedClass { class SystemCollectionsSpecializedNameValueCollectionClass extends SystemCollectionsSpecializedClass
{
SystemCollectionsSpecializedNameValueCollectionClass() { this.hasName("NameValueCollection") } SystemCollectionsSpecializedNameValueCollectionClass() { this.hasName("NameValueCollection") }
} }

View File

@@ -20,7 +20,8 @@ class SystemRuntimeCompilerServicesNamespaceUnboundGenericStruct extends Unbound
} }
/** The `System.Runtime.CompilerServices.TaskAwaiter<>` struct. */ /** The `System.Runtime.CompilerServices.TaskAwaiter<>` struct. */
class SystemRuntimeCompilerServicesTaskAwaiterStruct extends SystemRuntimeCompilerServicesNamespaceUnboundGenericStruct { class SystemRuntimeCompilerServicesTaskAwaiterStruct extends SystemRuntimeCompilerServicesNamespaceUnboundGenericStruct
{
SystemRuntimeCompilerServicesTaskAwaiterStruct() { this.hasName("TaskAwaiter<>") } SystemRuntimeCompilerServicesTaskAwaiterStruct() { this.hasName("TaskAwaiter<>") }
/** Gets the `GetResult` method. */ /** Gets the `GetResult` method. */
@@ -31,7 +32,8 @@ class SystemRuntimeCompilerServicesTaskAwaiterStruct extends SystemRuntimeCompil
} }
/** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>` struct. */ /** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>` struct. */
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct extends SystemRuntimeCompilerServicesNamespaceUnboundGenericStruct { class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct extends SystemRuntimeCompilerServicesNamespaceUnboundGenericStruct
{
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct() { SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct() {
this.hasName("ConfiguredTaskAwaitable<>") this.hasName("ConfiguredTaskAwaitable<>")
} }
@@ -55,7 +57,8 @@ private class SyntheticConfiguredTaskAwaiterField extends SyntheticField {
} }
/** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter` struct. */ /** The `System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>.ConfiguredTaskAwaiter` struct. */
class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct extends Struct { class SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct extends Struct
{
SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct() { SystemRuntimeCompilerServicesConfiguredTaskAwaitableTConfiguredTaskAwaiterStruct() {
this = any(SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct n).getANestedType() and this = any(SystemRuntimeCompilerServicesConfiguredTaskAwaitableTStruct n).getANestedType() and
this.hasName("ConfiguredTaskAwaiter") this.hasName("ConfiguredTaskAwaiter")

View File

@@ -22,7 +22,8 @@ class SystemSecurityCryptographyX509CertificatesClass extends Class {
* The `X509Certificate` or `X509Certificate2` class in the namespace * The `X509Certificate` or `X509Certificate2` class in the namespace
* `System.Security.Cryptography.X509Certificates`. * `System.Security.Cryptography.X509Certificates`.
*/ */
class SystemSecurityCryptographyX509CertificatesX509CertificateClass extends SystemSecurityCryptographyX509CertificatesClass { class SystemSecurityCryptographyX509CertificatesX509CertificateClass extends SystemSecurityCryptographyX509CertificatesClass
{
SystemSecurityCryptographyX509CertificatesX509CertificateClass() { SystemSecurityCryptographyX509CertificatesX509CertificateClass() {
this.hasName("X509Certificate") or this.hasName("X509Certificate") or
this.hasName("X509Certificate2") this.hasName("X509Certificate2")

View File

@@ -299,7 +299,8 @@ private predicate isDataContractJsonSerializerCall(MethodCall mc, Method m) {
abstract private class DataContractJsonSerializerSink extends InstanceMethodSink { } abstract private class DataContractJsonSerializerSink extends InstanceMethodSink { }
private class DataContractJsonSerializerDeserializeMethodSink extends DataContractJsonSerializerSink { private class DataContractJsonSerializerDeserializeMethodSink extends DataContractJsonSerializerSink
{
DataContractJsonSerializerDeserializeMethodSink() { DataContractJsonSerializerDeserializeMethodSink() {
exists(MethodCall mc | exists(MethodCall mc |
isDataContractJsonSerializerCall(mc, _) and isDataContractJsonSerializerCall(mc, _) and
@@ -308,7 +309,8 @@ private class DataContractJsonSerializerDeserializeMethodSink extends DataContra
} }
} }
private class DataContractJsonSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig { private class DataContractJsonSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig
{
DataContractJsonSafeConstructorTrackingConfiguration() { DataContractJsonSafeConstructorTrackingConfiguration() {
this = "DataContractJsonSafeConstructorTrackingConfiguration" this = "DataContractJsonSafeConstructorTrackingConfiguration"
} }
@@ -357,7 +359,8 @@ private class JavaScriptSerializerDeserializeMethodSink extends JavaScriptSerial
} }
} }
private class JavaScriptSerializerSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig { private class JavaScriptSerializerSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig
{
JavaScriptSerializerSafeConstructorTrackingConfiguration() { JavaScriptSerializerSafeConstructorTrackingConfiguration() {
this = "JavaScriptSerializerSafeConstructorTrackingConfiguration" this = "JavaScriptSerializerSafeConstructorTrackingConfiguration"
} }
@@ -400,7 +403,8 @@ private class XmlObjectSerializerDeserializeMethodSink extends XmlObjectSerializ
} }
} }
private class XmlObjectSerializerDerivedConstructorTrackingConfiguration extends SafeConstructorTrackingConfig { private class XmlObjectSerializerDerivedConstructorTrackingConfiguration extends SafeConstructorTrackingConfig
{
XmlObjectSerializerDerivedConstructorTrackingConfiguration() { XmlObjectSerializerDerivedConstructorTrackingConfiguration() {
this = "XmlObjectSerializerDerivedConstructorTrackingConfiguration" this = "XmlObjectSerializerDerivedConstructorTrackingConfiguration"
} }
@@ -445,7 +449,8 @@ private class XmlSerializerDeserializeMethodSink extends XmlSerializerSink {
} }
} }
private class XmlSerializerSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig { private class XmlSerializerSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig
{
XmlSerializerSafeConstructorTrackingConfiguration() { XmlSerializerSafeConstructorTrackingConfiguration() {
this = "XmlSerializerSafeConstructorTrackingConfiguration" this = "XmlSerializerSafeConstructorTrackingConfiguration"
} }
@@ -492,7 +497,8 @@ private class DataContractSerializerDeserializeMethodSink extends DataContractSe
} }
} }
private class DataContractSerializerSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig { private class DataContractSerializerSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig
{
DataContractSerializerSafeConstructorTrackingConfiguration() { DataContractSerializerSafeConstructorTrackingConfiguration() {
this = "DataContractSerializerSafeConstructorTrackingConfiguration" this = "DataContractSerializerSafeConstructorTrackingConfiguration"
} }
@@ -535,7 +541,8 @@ private class XmlMessageFormatterDeserializeMethodSink extends XmlMessageFormatt
} }
} }
private class XmlMessageFormatterSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig { private class XmlMessageFormatterSafeConstructorTrackingConfiguration extends SafeConstructorTrackingConfig
{
XmlMessageFormatterSafeConstructorTrackingConfiguration() { XmlMessageFormatterSafeConstructorTrackingConfiguration() {
this = "XmlMessageFormatterSafeConstructorTrackingConfiguration" this = "XmlMessageFormatterSafeConstructorTrackingConfiguration"
} }
@@ -717,7 +724,8 @@ private class SweetJaysonDeserializeMethodSink extends SweetJaysonSink {
/** ServiceStack.Text.JsonSerializer */ /** ServiceStack.Text.JsonSerializer */
abstract private class ServiceStackTextJsonSerializerSink extends ConstructorOrStaticMethodSink { } abstract private class ServiceStackTextJsonSerializerSink extends ConstructorOrStaticMethodSink { }
private class ServiceStackTextJsonSerializerDeserializeMethodSink extends ServiceStackTextJsonSerializerSink { private class ServiceStackTextJsonSerializerDeserializeMethodSink extends ServiceStackTextJsonSerializerSink
{
ServiceStackTextJsonSerializerDeserializeMethodSink() { ServiceStackTextJsonSerializerDeserializeMethodSink() {
exists(MethodCall mc, Method m | exists(MethodCall mc, Method m |
m = mc.getTarget() and m = mc.getTarget() and
@@ -741,7 +749,8 @@ private class ServiceStackTextJsonSerializerDeserializeMethodSink extends Servic
/** ServiceStack.Text.TypeSerializer */ /** ServiceStack.Text.TypeSerializer */
abstract private class ServiceStackTextTypeSerializerSink extends ConstructorOrStaticMethodSink { } abstract private class ServiceStackTextTypeSerializerSink extends ConstructorOrStaticMethodSink { }
private class ServiceStackTextTypeSerializerDeserializeMethodSink extends ServiceStackTextTypeSerializerSink { private class ServiceStackTextTypeSerializerDeserializeMethodSink extends ServiceStackTextTypeSerializerSink
{
ServiceStackTextTypeSerializerDeserializeMethodSink() { ServiceStackTextTypeSerializerDeserializeMethodSink() {
exists(MethodCall mc, Method m | exists(MethodCall mc, Method m |
m = mc.getTarget() and m = mc.getTarget() and
@@ -765,7 +774,8 @@ private class ServiceStackTextTypeSerializerDeserializeMethodSink extends Servic
/** ServiceStack.Text.CsvSerializer */ /** ServiceStack.Text.CsvSerializer */
abstract private class ServiceStackTextCsvSerializerSink extends ConstructorOrStaticMethodSink { } abstract private class ServiceStackTextCsvSerializerSink extends ConstructorOrStaticMethodSink { }
private class ServiceStackTextCsvSerializerDeserializeMethodSink extends ServiceStackTextCsvSerializerSink { private class ServiceStackTextCsvSerializerDeserializeMethodSink extends ServiceStackTextCsvSerializerSink
{
ServiceStackTextCsvSerializerDeserializeMethodSink() { ServiceStackTextCsvSerializerDeserializeMethodSink() {
exists(MethodCall mc, Method m | exists(MethodCall mc, Method m |
m = mc.getTarget() and m = mc.getTarget() and
@@ -789,7 +799,8 @@ private class ServiceStackTextCsvSerializerDeserializeMethodSink extends Service
/** ServiceStack.Text.XmlSerializer */ /** ServiceStack.Text.XmlSerializer */
abstract private class ServiceStackTextXmlSerializerSink extends ConstructorOrStaticMethodSink { } abstract private class ServiceStackTextXmlSerializerSink extends ConstructorOrStaticMethodSink { }
private class ServiceStackTextXmlSerializerDeserializeMethodSink extends ServiceStackTextXmlSerializerSink { private class ServiceStackTextXmlSerializerDeserializeMethodSink extends ServiceStackTextXmlSerializerSink
{
ServiceStackTextXmlSerializerDeserializeMethodSink() { ServiceStackTextXmlSerializerDeserializeMethodSink() {
exists(MethodCall mc, Method m | exists(MethodCall mc, Method m |
m = mc.getTarget() and m = mc.getTarget() and

View File

@@ -75,7 +75,8 @@ class AspNetQueryStringRemoteFlowSource extends AspNetRemoteFlowSource, DataFlow
/** A data flow source of remote user input (ASP.NET unvalidated request data). */ /** A data flow source of remote user input (ASP.NET unvalidated request data). */
class AspNetUnvalidatedQueryStringRemoteFlowSource extends AspNetRemoteFlowSource, class AspNetUnvalidatedQueryStringRemoteFlowSource extends AspNetRemoteFlowSource,
DataFlow::ExprNode { DataFlow::ExprNode
{
AspNetUnvalidatedQueryStringRemoteFlowSource() { AspNetUnvalidatedQueryStringRemoteFlowSource() {
this.getExpr() = any(SystemWebUnvalidatedRequestValues c).getAProperty().getGetter().getACall() or this.getExpr() = any(SystemWebUnvalidatedRequestValues c).getAProperty().getGetter().getACall() or
this.getExpr() = this.getExpr() =

View File

@@ -21,7 +21,8 @@ class TokenValidationParametersPropertySensitiveValidation extends Property {
/** /**
* A dataflow from a `false` value to a write sensitive property for `TokenValidationParameters`. * A dataflow from a `false` value to a write sensitive property for `TokenValidationParameters`.
*/ */
class FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation extends DataFlow::Configuration { class FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation extends DataFlow::Configuration
{
FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation() { FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation() {
this = "FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation" this = "FalseValueFlowsToTokenValidationParametersPropertyWriteToBypassValidation"
} }
@@ -219,7 +220,8 @@ class CallableAlwaysReturnsParameter0 extends CallableReturnsStringAndArg0IsStri
/** /**
* A Callable that always return the 1st argument, both of `string` type. Higher precision * A Callable that always return the 1st argument, both of `string` type. Higher precision
*/ */
class CallableAlwaysReturnsParameter0MayThrowExceptions extends CallableReturnsStringAndArg0IsString { class CallableAlwaysReturnsParameter0MayThrowExceptions extends CallableReturnsStringAndArg0IsString
{
CallableAlwaysReturnsParameter0MayThrowExceptions() { CallableAlwaysReturnsParameter0MayThrowExceptions() {
forex(Expr ret | this.canReturn(ret) | forex(Expr ret | this.canReturn(ret) |
ret = this.getParameter(0).getAnAccess() ret = this.getParameter(0).getAnAccess()

View File

@@ -80,7 +80,8 @@ class DateTimeStruct extends Struct {
/** /**
* Dataflow configuration to find flow from a GetLastWriteTime source to a DateTime arithmetic operation * Dataflow configuration to find flow from a GetLastWriteTime source to a DateTime arithmetic operation
*/ */
private class FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallable extends TaintTracking::Configuration { private class FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallable extends TaintTracking::Configuration
{
FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallable() { FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallable() {
this = "FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallable" this = "FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallable"
} }
@@ -103,7 +104,8 @@ private class FlowsFromGetLastWriteTimeConfigToTimeSpanArithmeticCallable extend
/** /**
* Dataflow configuration to find flow from a DateTime arithmetic operation to a DateTime comparison operation * Dataflow configuration to find flow from a DateTime arithmetic operation to a DateTime comparison operation
*/ */
private class FlowsFromTimeSpanArithmeticToTimeComparisonCallable extends TaintTracking::Configuration { private class FlowsFromTimeSpanArithmeticToTimeComparisonCallable extends TaintTracking::Configuration
{
FlowsFromTimeSpanArithmeticToTimeComparisonCallable() { FlowsFromTimeSpanArithmeticToTimeComparisonCallable() {
this = "FlowsFromTimeSpanArithmeticToTimeComparisonCallable" this = "FlowsFromTimeSpanArithmeticToTimeComparisonCallable"
} }
@@ -125,7 +127,8 @@ private class FlowsFromTimeSpanArithmeticToTimeComparisonCallable extends TaintT
/** /**
* Dataflow configuration to find flow from a DateTime comparison operation to a Selection Statement (such as an If) * Dataflow configuration to find flow from a DateTime comparison operation to a Selection Statement (such as an If)
*/ */
private class FlowsFromTimeComparisonCallableToSelectionStatementCondition extends TaintTracking::Configuration { private class FlowsFromTimeComparisonCallableToSelectionStatementCondition extends TaintTracking::Configuration
{
FlowsFromTimeComparisonCallableToSelectionStatementCondition() { FlowsFromTimeComparisonCallableToSelectionStatementCondition() {
this = "FlowsFromTimeComparisonCallableToSelectionStatementCondition" this = "FlowsFromTimeComparisonCallableToSelectionStatementCondition"
} }

View File

@@ -1082,7 +1082,8 @@ module Opcode {
* See the `CallSideEffectInstruction` documentation for more details. * See the `CallSideEffectInstruction` documentation for more details.
*/ */
class CallSideEffect extends WriteSideEffectOpcode, EscapedWriteOpcode, MayWriteOpcode, class CallSideEffect extends WriteSideEffectOpcode, EscapedWriteOpcode, MayWriteOpcode,
ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode, TCallSideEffect { ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode, TCallSideEffect
{
final override string toString() { result = "CallSideEffect" } final override string toString() { result = "CallSideEffect" }
} }
@@ -1092,7 +1093,8 @@ module Opcode {
* See the `CallReadSideEffectInstruction` documentation for more details. * See the `CallReadSideEffectInstruction` documentation for more details.
*/ */
class CallReadSideEffect extends ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode, class CallReadSideEffect extends ReadSideEffectOpcode, EscapedReadOpcode, MayReadOpcode,
TCallReadSideEffect { TCallReadSideEffect
{
final override string toString() { result = "CallReadSideEffect" } final override string toString() { result = "CallReadSideEffect" }
} }
@@ -1102,7 +1104,8 @@ module Opcode {
* See the `IndirectReadSideEffectInstruction` documentation for more details. * See the `IndirectReadSideEffectInstruction` documentation for more details.
*/ */
class IndirectReadSideEffect extends ReadSideEffectOpcode, IndirectReadOpcode, class IndirectReadSideEffect extends ReadSideEffectOpcode, IndirectReadOpcode,
TIndirectReadSideEffect { TIndirectReadSideEffect
{
final override string toString() { result = "IndirectReadSideEffect" } final override string toString() { result = "IndirectReadSideEffect" }
} }
@@ -1112,7 +1115,8 @@ module Opcode {
* See the `IndirectMustWriteSideEffectInstruction` documentation for more details. * See the `IndirectMustWriteSideEffectInstruction` documentation for more details.
*/ */
class IndirectMustWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode, class IndirectMustWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode,
TIndirectMustWriteSideEffect { TIndirectMustWriteSideEffect
{
final override string toString() { result = "IndirectMustWriteSideEffect" } final override string toString() { result = "IndirectMustWriteSideEffect" }
} }
@@ -1122,7 +1126,8 @@ module Opcode {
* See the `IndirectMayWriteSideEffectInstruction` documentation for more details. * See the `IndirectMayWriteSideEffectInstruction` documentation for more details.
*/ */
class IndirectMayWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode, class IndirectMayWriteSideEffect extends WriteSideEffectOpcode, IndirectWriteOpcode,
MayWriteOpcode, TIndirectMayWriteSideEffect { MayWriteOpcode, TIndirectMayWriteSideEffect
{
final override string toString() { result = "IndirectMayWriteSideEffect" } final override string toString() { result = "IndirectMayWriteSideEffect" }
} }
@@ -1132,7 +1137,8 @@ module Opcode {
* See the `BufferReadSideEffectInstruction` documentation for more details. * See the `BufferReadSideEffectInstruction` documentation for more details.
*/ */
class BufferReadSideEffect extends ReadSideEffectOpcode, UnsizedBufferReadOpcode, class BufferReadSideEffect extends ReadSideEffectOpcode, UnsizedBufferReadOpcode,
TBufferReadSideEffect { TBufferReadSideEffect
{
final override string toString() { result = "BufferReadSideEffect" } final override string toString() { result = "BufferReadSideEffect" }
} }
@@ -1142,7 +1148,8 @@ module Opcode {
* See the `BufferMustWriteSideEffectInstruction` documentation for more details. * See the `BufferMustWriteSideEffectInstruction` documentation for more details.
*/ */
class BufferMustWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode, class BufferMustWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode,
TBufferMustWriteSideEffect { TBufferMustWriteSideEffect
{
final override string toString() { result = "BufferMustWriteSideEffect" } final override string toString() { result = "BufferMustWriteSideEffect" }
} }
@@ -1152,7 +1159,8 @@ module Opcode {
* See the `BufferMayWriteSideEffectInstruction` documentation for more details. * See the `BufferMayWriteSideEffectInstruction` documentation for more details.
*/ */
class BufferMayWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode, class BufferMayWriteSideEffect extends WriteSideEffectOpcode, UnsizedBufferWriteOpcode,
MayWriteOpcode, TBufferMayWriteSideEffect { MayWriteOpcode, TBufferMayWriteSideEffect
{
final override string toString() { result = "BufferMayWriteSideEffect" } final override string toString() { result = "BufferMayWriteSideEffect" }
} }
@@ -1162,7 +1170,8 @@ module Opcode {
* See the `SizedBufferReadSideEffectInstruction` documentation for more details. * See the `SizedBufferReadSideEffectInstruction` documentation for more details.
*/ */
class SizedBufferReadSideEffect extends ReadSideEffectOpcode, SizedBufferReadOpcode, class SizedBufferReadSideEffect extends ReadSideEffectOpcode, SizedBufferReadOpcode,
TSizedBufferReadSideEffect { TSizedBufferReadSideEffect
{
final override string toString() { result = "SizedBufferReadSideEffect" } final override string toString() { result = "SizedBufferReadSideEffect" }
} }
@@ -1172,7 +1181,8 @@ module Opcode {
* See the `SizedBufferMustWriteSideEffectInstruction` documentation for more details. * See the `SizedBufferMustWriteSideEffectInstruction` documentation for more details.
*/ */
class SizedBufferMustWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode, class SizedBufferMustWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode,
TSizedBufferMustWriteSideEffect { TSizedBufferMustWriteSideEffect
{
final override string toString() { result = "SizedBufferMustWriteSideEffect" } final override string toString() { result = "SizedBufferMustWriteSideEffect" }
} }
@@ -1182,7 +1192,8 @@ module Opcode {
* See the `SizedBufferMayWriteSideEffectInstruction` documentation for more details. * See the `SizedBufferMayWriteSideEffectInstruction` documentation for more details.
*/ */
class SizedBufferMayWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode, class SizedBufferMayWriteSideEffect extends WriteSideEffectOpcode, SizedBufferWriteOpcode,
MayWriteOpcode, TSizedBufferMayWriteSideEffect { MayWriteOpcode, TSizedBufferMayWriteSideEffect
{
final override string toString() { result = "SizedBufferMayWriteSideEffect" } final override string toString() { result = "SizedBufferMayWriteSideEffect" }
} }
@@ -1192,7 +1203,8 @@ module Opcode {
* See the `InitializeDynamicAllocationInstruction` documentation for more details. * See the `InitializeDynamicAllocationInstruction` documentation for more details.
*/ */
class InitializeDynamicAllocation extends SideEffectOpcode, EntireAllocationWriteOpcode, class InitializeDynamicAllocation extends SideEffectOpcode, EntireAllocationWriteOpcode,
TInitializeDynamicAllocation { TInitializeDynamicAllocation
{
final override string toString() { result = "InitializeDynamicAllocation" } final override string toString() { result = "InitializeDynamicAllocation" }
} }
@@ -1221,7 +1233,8 @@ module Opcode {
* See the `InlineAsmInstruction` documentation for more details. * See the `InlineAsmInstruction` documentation for more details.
*/ */
class InlineAsm extends Opcode, EscapedWriteOpcode, MayWriteOpcode, EscapedReadOpcode, class InlineAsm extends Opcode, EscapedWriteOpcode, MayWriteOpcode, EscapedReadOpcode,
MayReadOpcode, TInlineAsm { MayReadOpcode, TInlineAsm
{
final override string toString() { result = "InlineAsm" } final override string toString() { result = "InlineAsm" }
final override predicate hasOperandInternal(OperandTag tag) { final override predicate hasOperandInternal(OperandTag tag) {

View File

@@ -28,7 +28,8 @@ abstract class TranslatedCondition extends ConditionBase {
} }
abstract class TranslatedFlexibleCondition extends TranslatedCondition, ConditionContext, abstract class TranslatedFlexibleCondition extends TranslatedCondition, ConditionContext,
TTranslatedFlexibleCondition { TTranslatedFlexibleCondition
{
TranslatedFlexibleCondition() { this = TTranslatedFlexibleCondition(expr) } TranslatedFlexibleCondition() { this = TTranslatedFlexibleCondition(expr) }
final override TranslatedElement getChild(int id) { id = 0 and result = this.getOperand() } final override TranslatedElement getChild(int id) { id = 0 and result = this.getOperand() }
@@ -156,7 +157,8 @@ class TranslatedLogicalOrExpr extends TranslatedBinaryLogicalOperation {
} }
class TranslatedValueCondition extends TranslatedCondition, ValueConditionBase, class TranslatedValueCondition extends TranslatedCondition, ValueConditionBase,
TTranslatedValueCondition { TTranslatedValueCondition
{
TranslatedValueCondition() { this = TTranslatedValueCondition(expr) } TranslatedValueCondition() { this = TTranslatedValueCondition(expr) }
override TranslatedExpr getValueExpr() { result = getTranslatedExpr(expr) } override TranslatedExpr getValueExpr() { result = getTranslatedExpr(expr) }

View File

@@ -40,7 +40,8 @@ abstract class TranslatedLocalDeclaration extends TranslatedElement, TTranslated
* including its initialization, if any. * including its initialization, if any.
*/ */
class TranslatedLocalVariableDeclaration extends TranslatedLocalDeclaration, class TranslatedLocalVariableDeclaration extends TranslatedLocalDeclaration,
LocalVariableDeclarationBase, InitializationContext { LocalVariableDeclarationBase, InitializationContext
{
LocalVariable var; LocalVariable var;
TranslatedLocalVariableDeclaration() { var = expr.getVariable() } TranslatedLocalVariableDeclaration() { var = expr.getVariable() }

View File

@@ -119,7 +119,8 @@ abstract class TranslatedCoreExpr extends TranslatedExpr {
} }
class TranslatedConditionValue extends TranslatedCoreExpr, ConditionContext, class TranslatedConditionValue extends TranslatedCoreExpr, ConditionContext,
TTranslatedConditionValue { TTranslatedConditionValue
{
TranslatedConditionValue() { this = TTranslatedConditionValue(expr) } TranslatedConditionValue() { this = TTranslatedConditionValue(expr) }
override TranslatedElement getChild(int id) { id = 0 and result = this.getCondition() } override TranslatedElement getChild(int id) { id = 0 and result = this.getCondition() }
@@ -1950,7 +1951,8 @@ class TranslatedDelegateCall extends TranslatedNonConstantExpr {
* object is allocated, which is then initialized by the constructor. * object is allocated, which is then initialized by the constructor.
*/ */
abstract class TranslatedCreation extends TranslatedCoreExpr, TTranslatedCreationExpr, abstract class TranslatedCreation extends TranslatedCoreExpr, TTranslatedCreationExpr,
ConstructorCallContext { ConstructorCallContext
{
TranslatedCreation() { this = TTranslatedCreationExpr(expr) } TranslatedCreation() { this = TTranslatedCreationExpr(expr) }
override TranslatedElement getChild(int id) { override TranslatedElement getChild(int id) {

View File

@@ -276,7 +276,8 @@ abstract class TranslatedElementInitialization extends TranslatedElement {
* an explicit element in an initializer list. * an explicit element in an initializer list.
*/ */
class TranslatedExplicitElementInitialization extends TranslatedElementInitialization, class TranslatedExplicitElementInitialization extends TranslatedElementInitialization,
TTranslatedExplicitElementInitialization, InitializationContext { TTranslatedExplicitElementInitialization, InitializationContext
{
int elementIndex; int elementIndex;
TranslatedExplicitElementInitialization() { TranslatedExplicitElementInitialization() {
@@ -312,7 +313,8 @@ class TranslatedExplicitElementInitialization extends TranslatedElementInitializ
// TODO: Possibly refactor into something simpler // TODO: Possibly refactor into something simpler
abstract class TranslatedConstructorCallFromConstructor extends TranslatedElement, abstract class TranslatedConstructorCallFromConstructor extends TranslatedElement,
ConstructorCallContext { ConstructorCallContext
{
Call call; Call call;
final override Language::AST getAst() { result = call } final override Language::AST getAst() { result = call }
@@ -344,7 +346,8 @@ TranslatedConstructorInitializer getTranslatedConstructorInitializer(Constructor
*/ */
// Review: do we need the conversion instructions in C#? // Review: do we need the conversion instructions in C#?
class TranslatedConstructorInitializer extends TranslatedConstructorCallFromConstructor, class TranslatedConstructorInitializer extends TranslatedConstructorCallFromConstructor,
TTranslatedConstructorInitializer { TTranslatedConstructorInitializer
{
TranslatedConstructorInitializer() { this = TTranslatedConstructorInitializer(call) } TranslatedConstructorInitializer() { this = TTranslatedConstructorInitializer(call) }
override string toString() { result = "constructor init: " + call.toString() } override string toString() { result = "constructor init: " + call.toString() }

View File

@@ -126,7 +126,8 @@ abstract class TranslatedCompilerGeneratedBlock extends TranslatedCompilerGenera
* the body of the `then` and the body of the `else`. * the body of the `then` and the body of the `else`.
*/ */
abstract class TranslatedCompilerGeneratedIfStmt extends TranslatedCompilerGeneratedStmt, abstract class TranslatedCompilerGeneratedIfStmt extends TranslatedCompilerGeneratedStmt,
ConditionContext { ConditionContext
{
override Instruction getFirstInstruction() { result = getCondition().getFirstInstruction() } override Instruction getFirstInstruction() { result = getCondition().getFirstInstruction() }
override TranslatedElement getChild(int id) { override TranslatedElement getChild(int id) {

View File

@@ -45,7 +45,8 @@ module DelegateElements {
* The translation of the constructor call that happens as part of the delegate creation. * The translation of the constructor call that happens as part of the delegate creation.
*/ */
private class TranslatedDelegateConstructorCall extends TranslatedCompilerGeneratedCall, private class TranslatedDelegateConstructorCall extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override DelegateCreation generatedBy; override DelegateCreation generatedBy;
TranslatedDelegateConstructorCall() { this = TTranslatedCompilerGeneratedElement(generatedBy, 0) } TranslatedDelegateConstructorCall() { this = TTranslatedCompilerGeneratedElement(generatedBy, 0) }
@@ -80,7 +81,8 @@ private class TranslatedDelegateConstructorCall extends TranslatedCompilerGenera
* The translation of the invoke call that happens as part of the desugaring of the delegate call. * The translation of the invoke call that happens as part of the desugaring of the delegate call.
*/ */
private class TranslatedDelegateInvokeCall extends TranslatedCompilerGeneratedCall, private class TranslatedDelegateInvokeCall extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override DelegateCall generatedBy; override DelegateCall generatedBy;
TranslatedDelegateInvokeCall() { this = TTranslatedCompilerGeneratedElement(generatedBy, 1) } TranslatedDelegateInvokeCall() { this = TTranslatedCompilerGeneratedElement(generatedBy, 1) }

View File

@@ -64,7 +64,8 @@ module ForeachElements {
} }
private class TranslatedForeachTry extends TranslatedCompilerGeneratedTry, private class TranslatedForeachTry extends TranslatedCompilerGeneratedTry,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachTry() { this = TTranslatedCompilerGeneratedElement(generatedBy, 0) } TranslatedForeachTry() { this = TTranslatedCompilerGeneratedElement(generatedBy, 0) }
@@ -88,7 +89,8 @@ private class TranslatedForeachTry extends TranslatedCompilerGeneratedTry,
* The translation of the finally block. * The translation of the finally block.
*/ */
private class TranslatedForeachFinally extends TranslatedCompilerGeneratedBlock, private class TranslatedForeachFinally extends TranslatedCompilerGeneratedBlock,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachFinally() { this = TTranslatedCompilerGeneratedElement(generatedBy, 1) } TranslatedForeachFinally() { this = TTranslatedCompilerGeneratedElement(generatedBy, 1) }
@@ -108,7 +110,8 @@ private class TranslatedForeachFinally extends TranslatedCompilerGeneratedBlock,
* to correctly mark which edges should be back edges. * to correctly mark which edges should be back edges.
*/ */
class TranslatedForeachWhile extends TranslatedCompilerGeneratedStmt, ConditionContext, class TranslatedForeachWhile extends TranslatedCompilerGeneratedStmt, ConditionContext,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachWhile() { this = TTranslatedCompilerGeneratedElement(generatedBy, 2) } TranslatedForeachWhile() { this = TTranslatedCompilerGeneratedElement(generatedBy, 2) }
@@ -164,7 +167,8 @@ class TranslatedForeachWhile extends TranslatedCompilerGeneratedStmt, ConditionC
* The translation of the call to the `MoveNext` method, used as a condition for the while. * The translation of the call to the `MoveNext` method, used as a condition for the while.
*/ */
private class TranslatedForeachMoveNext extends TranslatedCompilerGeneratedCall, private class TranslatedForeachMoveNext extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachMoveNext() { this = TTranslatedCompilerGeneratedElement(generatedBy, 3) } TranslatedForeachMoveNext() { this = TTranslatedCompilerGeneratedElement(generatedBy, 3) }
@@ -192,7 +196,8 @@ private class TranslatedForeachMoveNext extends TranslatedCompilerGeneratedCall,
* The translation of the call to retrieve the enumerator. * The translation of the call to retrieve the enumerator.
*/ */
private class TranslatedForeachGetEnumerator extends TranslatedCompilerGeneratedCall, private class TranslatedForeachGetEnumerator extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachGetEnumerator() { this = TTranslatedCompilerGeneratedElement(generatedBy, 4) } TranslatedForeachGetEnumerator() { this = TTranslatedCompilerGeneratedElement(generatedBy, 4) }
@@ -219,7 +224,8 @@ private class TranslatedForeachGetEnumerator extends TranslatedCompilerGenerated
* The translation of the call to the getter method of the `Current` property of the enumerator. * The translation of the call to the getter method of the `Current` property of the enumerator.
*/ */
private class TranslatedForeachCurrent extends TranslatedCompilerGeneratedCall, private class TranslatedForeachCurrent extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachCurrent() { this = TTranslatedCompilerGeneratedElement(generatedBy, 5) } TranslatedForeachCurrent() { this = TTranslatedCompilerGeneratedElement(generatedBy, 5) }
@@ -247,7 +253,8 @@ private class TranslatedForeachCurrent extends TranslatedCompilerGeneratedCall,
* The translation of the call to dispose (inside the finally block) * The translation of the call to dispose (inside the finally block)
*/ */
private class TranslatedForeachDispose extends TranslatedCompilerGeneratedCall, private class TranslatedForeachDispose extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachDispose() { this = TTranslatedCompilerGeneratedElement(generatedBy, 6) } TranslatedForeachDispose() { this = TTranslatedCompilerGeneratedElement(generatedBy, 6) }
@@ -275,7 +282,8 @@ private class TranslatedForeachDispose extends TranslatedCompilerGeneratedCall,
* The condition for the while, ie. a call to MoveNext. * The condition for the while, ie. a call to MoveNext.
*/ */
private class TranslatedForeachWhileCondition extends TranslatedCompilerGeneratedValueCondition, private class TranslatedForeachWhileCondition extends TranslatedCompilerGeneratedValueCondition,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachWhileCondition() { this = TTranslatedCompilerGeneratedElement(generatedBy, 7) } TranslatedForeachWhileCondition() { this = TTranslatedCompilerGeneratedElement(generatedBy, 7) }
@@ -295,7 +303,8 @@ private class TranslatedForeachWhileCondition extends TranslatedCompilerGenerate
* declaration of the `temporary` enumerator variable) * declaration of the `temporary` enumerator variable)
*/ */
private class TranslatedForeachEnumerator extends TranslatedCompilerGeneratedDeclaration, private class TranslatedForeachEnumerator extends TranslatedCompilerGeneratedDeclaration,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachEnumerator() { this = TTranslatedCompilerGeneratedElement(generatedBy, 8) } TranslatedForeachEnumerator() { this = TTranslatedCompilerGeneratedElement(generatedBy, 8) }
@@ -323,7 +332,8 @@ private class TranslatedForeachEnumerator extends TranslatedCompilerGeneratedDec
* Class that represents that translation of the declaration that's happening inside the body of the while. * Class that represents that translation of the declaration that's happening inside the body of the while.
*/ */
private class TranslatedForeachIterVar extends TranslatedCompilerGeneratedDeclaration, private class TranslatedForeachIterVar extends TranslatedCompilerGeneratedDeclaration,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachIterVar() { this = TTranslatedCompilerGeneratedElement(generatedBy, 9) } TranslatedForeachIterVar() { this = TTranslatedCompilerGeneratedElement(generatedBy, 9) }
@@ -352,7 +362,8 @@ private class TranslatedForeachIterVar extends TranslatedCompilerGeneratedDeclar
* for the call to `MoveNext`. * for the call to `MoveNext`.
*/ */
private class TranslatedMoveNextEnumAcc extends TTranslatedCompilerGeneratedElement, private class TranslatedMoveNextEnumAcc extends TTranslatedCompilerGeneratedElement,
TranslatedCompilerGeneratedVariableAccess { TranslatedCompilerGeneratedVariableAccess
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedMoveNextEnumAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 10) } TranslatedMoveNextEnumAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 10) }
@@ -384,7 +395,8 @@ private class TranslatedMoveNextEnumAcc extends TTranslatedCompilerGeneratedElem
* for the call to the getter of the property `Current`. * for the call to the getter of the property `Current`.
*/ */
private class TranslatedForeachCurrentEnumAcc extends TTranslatedCompilerGeneratedElement, private class TranslatedForeachCurrentEnumAcc extends TTranslatedCompilerGeneratedElement,
TranslatedCompilerGeneratedVariableAccess { TranslatedCompilerGeneratedVariableAccess
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachCurrentEnumAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 11) } TranslatedForeachCurrentEnumAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 11) }
@@ -416,7 +428,8 @@ private class TranslatedForeachCurrentEnumAcc extends TTranslatedCompilerGenerat
* for the call to `Dispose`. * for the call to `Dispose`.
*/ */
private class TranslatedForeachDisposeEnumAcc extends TTranslatedCompilerGeneratedElement, private class TranslatedForeachDisposeEnumAcc extends TTranslatedCompilerGeneratedElement,
TranslatedCompilerGeneratedVariableAccess { TranslatedCompilerGeneratedVariableAccess
{
override ForeachStmt generatedBy; override ForeachStmt generatedBy;
TranslatedForeachDisposeEnumAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 12) } TranslatedForeachDisposeEnumAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 12) }

View File

@@ -57,7 +57,8 @@ module LockElements {
* The translation of the `try` stmt. * The translation of the `try` stmt.
*/ */
private class TranslatedLockTry extends TranslatedCompilerGeneratedTry, private class TranslatedLockTry extends TranslatedCompilerGeneratedTry,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedLockTry() { this = TTranslatedCompilerGeneratedElement(generatedBy, 0) } TranslatedLockTry() { this = TTranslatedCompilerGeneratedElement(generatedBy, 0) }
@@ -81,7 +82,8 @@ private class TranslatedLockTry extends TranslatedCompilerGeneratedTry,
* The translation of the `lock` stmt's body. * The translation of the `lock` stmt's body.
*/ */
private class TranslatedLockTryBody extends TranslatedCompilerGeneratedBlock, private class TranslatedLockTryBody extends TranslatedCompilerGeneratedBlock,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedLockTryBody() { this = TTranslatedCompilerGeneratedElement(generatedBy, 1) } TranslatedLockTryBody() { this = TTranslatedCompilerGeneratedElement(generatedBy, 1) }
@@ -102,7 +104,8 @@ private class TranslatedLockTryBody extends TranslatedCompilerGeneratedBlock,
* The translation of the finally block. * The translation of the finally block.
*/ */
private class TranslatedLockFinally extends TranslatedCompilerGeneratedBlock, private class TranslatedLockFinally extends TranslatedCompilerGeneratedBlock,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedLockFinally() { this = TTranslatedCompilerGeneratedElement(generatedBy, 2) } TranslatedLockFinally() { this = TTranslatedCompilerGeneratedElement(generatedBy, 2) }
@@ -120,7 +123,8 @@ private class TranslatedLockFinally extends TranslatedCompilerGeneratedBlock,
* The translation of the call to dispose (inside the finally block) * The translation of the call to dispose (inside the finally block)
*/ */
private class TranslatedMonitorExit extends TranslatedCompilerGeneratedCall, private class TranslatedMonitorExit extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedMonitorExit() { this = TTranslatedCompilerGeneratedElement(generatedBy, 3) } TranslatedMonitorExit() { this = TTranslatedCompilerGeneratedElement(generatedBy, 3) }
@@ -152,7 +156,8 @@ private class TranslatedMonitorExit extends TranslatedCompilerGeneratedCall,
* The translation of the call to dispose (inside the finally block) * The translation of the call to dispose (inside the finally block)
*/ */
private class TranslatedMonitorEnter extends TranslatedCompilerGeneratedCall, private class TranslatedMonitorEnter extends TranslatedCompilerGeneratedCall,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedMonitorEnter() { this = TTranslatedCompilerGeneratedElement(generatedBy, 4) } TranslatedMonitorEnter() { this = TTranslatedCompilerGeneratedElement(generatedBy, 4) }
@@ -190,7 +195,8 @@ private class TranslatedMonitorEnter extends TranslatedCompilerGeneratedCall,
* The translation of the condition of the `if` present in the `finally` clause. * The translation of the condition of the `if` present in the `finally` clause.
*/ */
private class TranslatedIfCondition extends TranslatedCompilerGeneratedValueCondition, private class TranslatedIfCondition extends TranslatedCompilerGeneratedValueCondition,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedIfCondition() { this = TTranslatedCompilerGeneratedElement(generatedBy, 5) } TranslatedIfCondition() { this = TTranslatedCompilerGeneratedElement(generatedBy, 5) }
@@ -209,7 +215,8 @@ private class TranslatedIfCondition extends TranslatedCompilerGeneratedValueCond
* The translation of the `if` stmt present in the `finally` clause. * The translation of the `if` stmt present in the `finally` clause.
*/ */
private class TranslatedFinallyIf extends TranslatedCompilerGeneratedIfStmt, private class TranslatedFinallyIf extends TranslatedCompilerGeneratedIfStmt,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedFinallyIf() { this = TTranslatedCompilerGeneratedElement(generatedBy, 6) } TranslatedFinallyIf() { this = TTranslatedCompilerGeneratedElement(generatedBy, 6) }
@@ -236,7 +243,8 @@ private class TranslatedFinallyIf extends TranslatedCompilerGeneratedIfStmt,
* bool temp variable. * bool temp variable.
*/ */
private class TranslatedWasTakenConst extends TranslatedCompilerGeneratedConstant, private class TranslatedWasTakenConst extends TranslatedCompilerGeneratedConstant,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedWasTakenConst() { this = TTranslatedCompilerGeneratedElement(generatedBy, 7) } TranslatedWasTakenConst() { this = TTranslatedCompilerGeneratedElement(generatedBy, 7) }
@@ -255,7 +263,8 @@ private class TranslatedWasTakenConst extends TranslatedCompilerGeneratedConstan
* Represents the translation of the `lockWasTaken` temp variable declaration. * Represents the translation of the `lockWasTaken` temp variable declaration.
*/ */
private class TranslatedLockWasTakenDecl extends TranslatedCompilerGeneratedDeclaration, private class TranslatedLockWasTakenDecl extends TranslatedCompilerGeneratedDeclaration,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedLockWasTakenDecl() { this = TTranslatedCompilerGeneratedElement(generatedBy, 8) } TranslatedLockWasTakenDecl() { this = TTranslatedCompilerGeneratedElement(generatedBy, 8) }
@@ -286,7 +295,8 @@ private class TranslatedLockWasTakenDecl extends TranslatedCompilerGeneratedDecl
* expression being locked. * expression being locked.
*/ */
private class TranslatedLockedVarDecl extends TranslatedCompilerGeneratedDeclaration, private class TranslatedLockedVarDecl extends TranslatedCompilerGeneratedDeclaration,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedLockedVarDecl() { this = TTranslatedCompilerGeneratedElement(generatedBy, 9) } TranslatedLockedVarDecl() { this = TTranslatedCompilerGeneratedElement(generatedBy, 9) }
@@ -315,7 +325,8 @@ private class TranslatedLockedVarDecl extends TranslatedCompilerGeneratedDeclara
* Used as an argument for the `MonitorEnter` call. * Used as an argument for the `MonitorEnter` call.
*/ */
private class TranslatedMonitorEnterVarAcc extends TTranslatedCompilerGeneratedElement, private class TranslatedMonitorEnterVarAcc extends TTranslatedCompilerGeneratedElement,
TranslatedCompilerGeneratedVariableAccess { TranslatedCompilerGeneratedVariableAccess
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedMonitorEnterVarAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 10) } TranslatedMonitorEnterVarAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 10) }
@@ -341,7 +352,8 @@ private class TranslatedMonitorEnterVarAcc extends TTranslatedCompilerGeneratedE
* Used as an argument for the `MonitorExit` call. * Used as an argument for the `MonitorExit` call.
*/ */
private class TranslatedMonitorExitVarAcc extends TTranslatedCompilerGeneratedElement, private class TranslatedMonitorExitVarAcc extends TTranslatedCompilerGeneratedElement,
TranslatedCompilerGeneratedVariableAccess { TranslatedCompilerGeneratedVariableAccess
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedMonitorExitVarAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 11) } TranslatedMonitorExitVarAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 11) }
@@ -366,7 +378,8 @@ private class TranslatedMonitorExitVarAcc extends TTranslatedCompilerGeneratedEl
* Used as an argument for the `MonitorEnter` call. * Used as an argument for the `MonitorEnter` call.
*/ */
private class TranslatedLockWasTakenCondVarAcc extends TTranslatedCompilerGeneratedElement, private class TranslatedLockWasTakenCondVarAcc extends TTranslatedCompilerGeneratedElement,
TranslatedCompilerGeneratedVariableAccess { TranslatedCompilerGeneratedVariableAccess
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedLockWasTakenCondVarAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 12) } TranslatedLockWasTakenCondVarAcc() { this = TTranslatedCompilerGeneratedElement(generatedBy, 12) }
@@ -391,7 +404,8 @@ private class TranslatedLockWasTakenCondVarAcc extends TTranslatedCompilerGenera
* as the `if` condition in the finally clause. * as the `if` condition in the finally clause.
*/ */
private class TranslatedLockWasTakenRefArg extends TTranslatedCompilerGeneratedElement, private class TranslatedLockWasTakenRefArg extends TTranslatedCompilerGeneratedElement,
TranslatedCompilerGeneratedVariableAccess { TranslatedCompilerGeneratedVariableAccess
{
override LockStmt generatedBy; override LockStmt generatedBy;
TranslatedLockWasTakenRefArg() { this = TTranslatedCompilerGeneratedElement(generatedBy, 13) } TranslatedLockWasTakenRefArg() { this = TTranslatedCompilerGeneratedElement(generatedBy, 13) }

View File

@@ -10,7 +10,8 @@ private import TranslatedCompilerGeneratedElement
private import experimental.ir.internal.IRCSharpLanguage as Language private import experimental.ir.internal.IRCSharpLanguage as Language
abstract class TranslatedCompilerGeneratedCall extends TranslatedCallBase, abstract class TranslatedCompilerGeneratedCall extends TranslatedCallBase,
TranslatedCompilerGeneratedElement { TranslatedCompilerGeneratedElement
{
final override string toString() { final override string toString() {
result = "compiler generated call (" + generatedBy.toString() + ")" result = "compiler generated call (" + generatedBy.toString() + ")"
} }

View File

@@ -9,7 +9,8 @@ private import TranslatedCompilerGeneratedElement
private import experimental.ir.internal.IRCSharpLanguage as Language private import experimental.ir.internal.IRCSharpLanguage as Language
abstract class TranslatedCompilerGeneratedValueCondition extends TranslatedCompilerGeneratedElement, abstract class TranslatedCompilerGeneratedValueCondition extends TranslatedCompilerGeneratedElement,
ValueConditionBase { ValueConditionBase
{
final override string toString() { final override string toString() {
result = "compiler generated condition (" + generatedBy.toString() + ")" result = "compiler generated condition (" + generatedBy.toString() + ")"
} }

View File

@@ -16,7 +16,8 @@ private import experimental.ir.internal.CSharpType
private import experimental.ir.internal.IRCSharpLanguage as Language private import experimental.ir.internal.IRCSharpLanguage as Language
abstract class TranslatedCompilerGeneratedDeclaration extends LocalVariableDeclarationBase, abstract class TranslatedCompilerGeneratedDeclaration extends LocalVariableDeclarationBase,
TranslatedCompilerGeneratedElement { TranslatedCompilerGeneratedElement
{
final override string toString() { final override string toString() {
result = "compiler generated declaration (" + generatedBy.toString() + ")" result = "compiler generated declaration (" + generatedBy.toString() + ")"
} }

View File

@@ -7,7 +7,8 @@ private import experimental.ir.implementation.raw.internal.TranslatedElement
private import experimental.ir.internal.IRCSharpLanguage as Language private import experimental.ir.internal.IRCSharpLanguage as Language
abstract class TranslatedCompilerGeneratedElement extends TranslatedElement, abstract class TranslatedCompilerGeneratedElement extends TranslatedElement,
TTranslatedCompilerGeneratedElement { TTranslatedCompilerGeneratedElement
{
// The element that generates generated the compiler element can // The element that generates generated the compiler element can
// only be a stmt or an expr // only be a stmt or an expr
ControlFlowElement generatedBy; ControlFlowElement generatedBy;

View File

@@ -10,7 +10,8 @@ private import experimental.ir.implementation.raw.internal.common.TranslatedExpr
private import experimental.ir.internal.IRCSharpLanguage as Language private import experimental.ir.internal.IRCSharpLanguage as Language
abstract class TranslatedCompilerGeneratedExpr extends TranslatedCompilerGeneratedElement, abstract class TranslatedCompilerGeneratedExpr extends TranslatedCompilerGeneratedElement,
TranslatedExprBase { TranslatedExprBase
{
override string toString() { result = "compiler generated expr (" + generatedBy.toString() + ")" } override string toString() { result = "compiler generated expr (" + generatedBy.toString() + ")" }
abstract Type getResultType(); abstract Type getResultType();

View File

@@ -6,7 +6,8 @@ private class IncludeAllSummarizedCallable extends IncludeSummarizedCallable {
IncludeAllSummarizedCallable() { exists(this) } IncludeAllSummarizedCallable() { exists(this) }
} }
private class IncludeNeutralCallable extends RelevantNeutralCallable instanceof FlowSummaryImpl::Public::NeutralCallable { private class IncludeNeutralCallable extends RelevantNeutralCallable instanceof FlowSummaryImpl::Public::NeutralCallable
{
/** Gets a string representing the callable in semi-colon separated format for use in flow summaries. */ /** Gets a string representing the callable in semi-colon separated format for use in flow summaries. */
final override string getCallableCsv() { result = Csv::asPartialNeutralModel(this) } final override string getCallableCsv() { result = Csv::asPartialNeutralModel(this) }
} }

View File

@@ -2,7 +2,8 @@ import shared.FlowSummaries
private import semmle.code.csharp.dataflow.internal.DataFlowPrivate::Csv private import semmle.code.csharp.dataflow.internal.DataFlowPrivate::Csv
private import semmle.code.csharp.dataflow.ExternalFlow private import semmle.code.csharp.dataflow.ExternalFlow
class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable instanceof SummarizedCallable { class IncludeFilteredSummarizedCallable extends IncludeSummarizedCallable instanceof SummarizedCallable
{
/** /**
* Holds if flow is propagated between `input` and `output` and * Holds if flow is propagated between `input` and `output` and
* if there is no summary for a callable in a `base` class or interface * if there is no summary for a callable in a `base` class or interface

View File

@@ -2,8 +2,8 @@ import semmle.code.csharp.frameworks.EntityFramework::EntityFramework
import shared.FlowSummaries import shared.FlowSummaries
import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow import semmle.code.csharp.dataflow.ExternalFlow as ExternalFlow
private class IncludeEFSummarizedCallable extends IncludeSummarizedCallable instanceof EFSummarizedCallable { private class IncludeEFSummarizedCallable extends IncludeSummarizedCallable instanceof EFSummarizedCallable
} { }
query predicate sourceNode(DataFlow::Node node, string kind) { query predicate sourceNode(DataFlow::Node node, string kind) {
ExternalFlow::sourceNode(node, kind) ExternalFlow::sourceNode(node, kind)

View File

@@ -183,7 +183,8 @@ class Folder extends Container, @folder {
/** Any file, including files that have not been extracted but are referred to as locations for errors. */ /** Any file, including files that have not been extracted but are referred to as locations for errors. */
class ExtractedOrExternalFile extends Container, @file, Documentable, ExprParent, GoModExprParent, class ExtractedOrExternalFile extends Container, @file, Documentable, ExprParent, GoModExprParent,
DeclParent, ScopeNode { DeclParent, ScopeNode
{
override Location getLocation() { has_location(this, result) } override Location getLocation() { has_location(this, result) }
override string getAbsolutePath() { files(this, result) } override string getAbsolutePath() { files(this, result) }

View File

@@ -228,7 +228,8 @@ module StringOps {
* the receiver of a call to `strings.Replacer.Replace` or * the receiver of a call to `strings.Replacer.Replace` or
* `strings.Replacer.WriteString`. * `strings.Replacer.WriteString`.
*/ */
private class StringsNewReplacerConfiguration extends DataFlowForStringsNewReplacer::Configuration { private class StringsNewReplacerConfiguration extends DataFlowForStringsNewReplacer::Configuration
{
StringsNewReplacerConfiguration() { this = "StringsNewReplacerConfiguration" } StringsNewReplacerConfiguration() { this = "StringsNewReplacerConfiguration" }
override predicate isSource(DataFlow::Node source) { override predicate isSource(DataFlow::Node source) {

View File

@@ -7,7 +7,8 @@ import TaintTrackingParameter::Public
private import TaintTrackingParameter::Private private import TaintTrackingParameter::Private
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements
DataFlowInternal::FullStateConfigSig { DataFlowInternal::FullStateConfigSig
{
import Config import Config
predicate isBarrier(DataFlow::Node node) { predicate isBarrier(DataFlow::Node node) {

View File

@@ -21,7 +21,8 @@ private module Chi {
* Methods that extract URL parameters, considered as a source of untrusted flow. * Methods that extract URL parameters, considered as a source of untrusted flow.
*/ */
private class UserControlledRequestMethod extends UntrustedFlowSource::Range, private class UserControlledRequestMethod extends UntrustedFlowSource::Range,
DataFlow::MethodCallNode { DataFlow::MethodCallNode
{
UserControlledRequestMethod() { UserControlledRequestMethod() {
this.getTarget().hasQualifiedName(packagePath(), "Context", "URLParam") this.getTarget().hasQualifiedName(packagePath(), "Context", "URLParam")
} }

View File

@@ -9,7 +9,8 @@ private string packagePath() { result = package("github.com/json-iterator/go", "
/** A model of json-iterator's `Unmarshal` function, propagating taint from the JSON input to the decoded object. */ /** A model of json-iterator's `Unmarshal` function, propagating taint from the JSON input to the decoded object. */
private class JsonIteratorUnmarshalFunction extends TaintTracking::FunctionModel, private class JsonIteratorUnmarshalFunction extends TaintTracking::FunctionModel,
UnmarshalingFunction::Range { UnmarshalingFunction::Range
{
JsonIteratorUnmarshalFunction() { JsonIteratorUnmarshalFunction() {
this.hasQualifiedName(packagePath(), ["Unmarshal", "UnmarshalFromString"]) this.hasQualifiedName(packagePath(), ["Unmarshal", "UnmarshalFromString"])
or or

View File

@@ -28,7 +28,8 @@ module K8sIoApiCoreV1 {
} }
private class SecretMarshal extends TaintTracking::FunctionModel, Method, private class SecretMarshal extends TaintTracking::FunctionModel, Method,
MarshalingFunction::Range { MarshalingFunction::Range
{
SecretMarshal() { this.hasQualifiedName(packagePath(), ["Secret", "SecretList"], "Marshal") } SecretMarshal() { this.hasQualifiedName(packagePath(), ["Secret", "SecretList"], "Marshal") }
override DataFlow::FunctionInput getAnInput() { result.isReceiver() } override DataFlow::FunctionInput getAnInput() { result.isReceiver() }
@@ -43,7 +44,8 @@ module K8sIoApiCoreV1 {
} }
private class SecretUnmarshal extends TaintTracking::FunctionModel, Method, private class SecretUnmarshal extends TaintTracking::FunctionModel, Method,
UnmarshalingFunction::Range { UnmarshalingFunction::Range
{
SecretUnmarshal() { SecretUnmarshal() {
this.hasQualifiedName(packagePath(), ["Secret", "SecretList"], "Unmarshal") this.hasQualifiedName(packagePath(), ["Secret", "SecretList"], "Unmarshal")
} }

View File

@@ -85,7 +85,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class CacheableObjectCacheEncode extends TaintTracking::FunctionModel, Method, private class CacheableObjectCacheEncode extends TaintTracking::FunctionModel, Method,
MarshalingFunction::Range { MarshalingFunction::Range
{
CacheableObjectCacheEncode() { CacheableObjectCacheEncode() {
this.implements(packagePath(), "CacheableObject", "CacheEncode") this.implements(packagePath(), "CacheableObject", "CacheEncode")
} }
@@ -113,7 +114,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class DecoderDecode extends TaintTracking::FunctionModel, Method, private class DecoderDecode extends TaintTracking::FunctionModel, Method,
UnmarshalingFunction::Range { UnmarshalingFunction::Range
{
DecoderDecode() { DecoderDecode() {
this.implements(packagePath(), "Decoder", "Decode") or this.implements(packagePath(), "Decoder", "Decode") or
this.hasQualifiedName(packagePath(), "WithoutVersionDecoder", "Decode") this.hasQualifiedName(packagePath(), "WithoutVersionDecoder", "Decode")
@@ -134,7 +136,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class EncoderEncode extends TaintTracking::FunctionModel, Method, private class EncoderEncode extends TaintTracking::FunctionModel, Method,
MarshalingFunction::Range { MarshalingFunction::Range
{
EncoderEncode() { EncoderEncode() {
this.implements(packagePath(), "Encoder", "Encode") or this.implements(packagePath(), "Encoder", "Encode") or
this.hasQualifiedName(packagePath(), "WithVersionEncoder", "Encode") this.hasQualifiedName(packagePath(), "WithVersionEncoder", "Encode")
@@ -240,7 +243,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class ParameterCodecDecodeParameters extends TaintTracking::FunctionModel, Method, private class ParameterCodecDecodeParameters extends TaintTracking::FunctionModel, Method,
UnmarshalingFunction::Range { UnmarshalingFunction::Range
{
ParameterCodecDecodeParameters() { ParameterCodecDecodeParameters() {
this.implements(packagePath(), "ParameterCodec", "DecodeParameters") this.implements(packagePath(), "ParameterCodec", "DecodeParameters")
} }
@@ -260,7 +264,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class ParameterCodecEncodeParameters extends TaintTracking::FunctionModel, Method, private class ParameterCodecEncodeParameters extends TaintTracking::FunctionModel, Method,
MarshalingFunction::Range { MarshalingFunction::Range
{
ParameterCodecEncodeParameters() { ParameterCodecEncodeParameters() {
this.implements(packagePath(), "ParameterCodec", "EncodeParameters") this.implements(packagePath(), "ParameterCodec", "EncodeParameters")
} }
@@ -280,7 +285,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class ProtobufMarshallerMarshalTo extends TaintTracking::FunctionModel, Method, private class ProtobufMarshallerMarshalTo extends TaintTracking::FunctionModel, Method,
MarshalingFunction::Range { MarshalingFunction::Range
{
ProtobufMarshallerMarshalTo() { ProtobufMarshallerMarshalTo() {
this.implements(packagePath(), "ProtobufMarshaller", "MarshalTo") or this.implements(packagePath(), "ProtobufMarshaller", "MarshalTo") or
this.implements(packagePath(), "ProtobufReverseMarshaller", "MarshalToSizedBuffer") this.implements(packagePath(), "ProtobufReverseMarshaller", "MarshalToSizedBuffer")
@@ -316,7 +322,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class RawExtensionMarshal extends TaintTracking::FunctionModel, Method, private class RawExtensionMarshal extends TaintTracking::FunctionModel, Method,
MarshalingFunction::Range { MarshalingFunction::Range
{
RawExtensionMarshal() { this.hasQualifiedName(packagePath(), "RawExtension", "Marshal") } RawExtensionMarshal() { this.hasQualifiedName(packagePath(), "RawExtension", "Marshal") }
override DataFlow::FunctionInput getAnInput() { result.isReceiver() } override DataFlow::FunctionInput getAnInput() { result.isReceiver() }
@@ -331,7 +338,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class RawExtensionUnmarshal extends TaintTracking::FunctionModel, Method, private class RawExtensionUnmarshal extends TaintTracking::FunctionModel, Method,
UnmarshalingFunction::Range { UnmarshalingFunction::Range
{
RawExtensionUnmarshal() { this.hasQualifiedName(packagePath(), "RawExtension", "Unmarshal") } RawExtensionUnmarshal() { this.hasQualifiedName(packagePath(), "RawExtension", "Unmarshal") }
override DataFlow::FunctionInput getAnInput() { result.isReceiver() } override DataFlow::FunctionInput getAnInput() { result.isReceiver() }
@@ -364,7 +372,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class UnknownMarshal extends TaintTracking::FunctionModel, Method, private class UnknownMarshal extends TaintTracking::FunctionModel, Method,
MarshalingFunction::Range { MarshalingFunction::Range
{
string methodName; string methodName;
UnknownMarshal() { UnknownMarshal() {
@@ -388,7 +397,8 @@ module K8sIoApimachineryPkgRuntime {
} }
private class UnknownUnmarshal extends TaintTracking::FunctionModel, Method, private class UnknownUnmarshal extends TaintTracking::FunctionModel, Method,
UnmarshalingFunction::Range { UnmarshalingFunction::Range
{
UnknownUnmarshal() { this.hasQualifiedName(packagePath(), "Unknown", "Unmarshal") } UnknownUnmarshal() { this.hasQualifiedName(packagePath(), "Unknown", "Unmarshal") }
override DataFlow::FunctionInput getAnInput() { result.isReceiver() } override DataFlow::FunctionInput getAnInput() { result.isReceiver() }

View File

@@ -20,7 +20,8 @@ module Revel {
} }
private class ParamsFixedSanitizer extends TaintTracking::DefaultTaintSanitizer, private class ParamsFixedSanitizer extends TaintTracking::DefaultTaintSanitizer,
DataFlow::FieldReadNode { DataFlow::FieldReadNode
{
ParamsFixedSanitizer() { ParamsFixedSanitizer() {
exists(Field f | exists(Field f |
this.readsField(_, f) and this.readsField(_, f) and
@@ -48,7 +49,8 @@ module Revel {
/** An access to an HTTP request field whose value may be controlled by an untrusted user. */ /** An access to an HTTP request field whose value may be controlled by an untrusted user. */
private class UserControlledRequestField extends UntrustedFlowSource::Range, private class UserControlledRequestField extends UntrustedFlowSource::Range,
DataFlow::FieldReadNode { DataFlow::FieldReadNode
{
UserControlledRequestField() { UserControlledRequestField() {
exists(string fieldName | exists(string fieldName |
this.getField().hasQualifiedName(packagePath(), "Request", fieldName) this.getField().hasQualifiedName(packagePath(), "Request", fieldName)
@@ -61,7 +63,8 @@ module Revel {
} }
private class UserControlledRequestMethod extends UntrustedFlowSource::Range, private class UserControlledRequestMethod extends UntrustedFlowSource::Range,
DataFlow::MethodCallNode { DataFlow::MethodCallNode
{
UserControlledRequestMethod() { UserControlledRequestMethod() {
this.getTarget() this.getTarget()
.hasQualifiedName(packagePath(), "Request", .hasQualifiedName(packagePath(), "Request",

View File

@@ -8,7 +8,8 @@ import go
module NetHttp { module NetHttp {
/** An access to an HTTP request field whose value may be controlled by an untrusted user. */ /** An access to an HTTP request field whose value may be controlled by an untrusted user. */
private class UserControlledRequestField extends UntrustedFlowSource::Range, private class UserControlledRequestField extends UntrustedFlowSource::Range,
DataFlow::FieldReadNode { DataFlow::FieldReadNode
{
UserControlledRequestField() { UserControlledRequestField() {
exists(string fieldName | this.getField().hasQualifiedName("net/http", "Request", fieldName) | exists(string fieldName | this.getField().hasQualifiedName("net/http", "Request", fieldName) |
fieldName = fieldName =

View File

@@ -25,7 +25,8 @@ module TextTemplate {
} }
private class TextTemplateInstantiation extends TemplateInstantiation::Range, private class TextTemplateInstantiation extends TemplateInstantiation::Range,
DataFlow::MethodCallNode { DataFlow::MethodCallNode
{
int dataArg; int dataArg;
TextTemplateInstantiation() { TextTemplateInstantiation() {

View File

@@ -183,7 +183,8 @@ module CleartextLogging {
override string describe() { result = "HTTP request headers" } override string describe() { result = "HTTP request headers" }
} }
private class KubernetesSecretInterfaceSource extends Source, K8sIoClientGo::SecretInterfaceSource { private class KubernetesSecretInterfaceSource extends Source, K8sIoClientGo::SecretInterfaceSource
{
override string describe() { result = "Kubernetes Secret" } override string describe() { result = "Kubernetes Secret" }
} }

View File

@@ -7,7 +7,8 @@ import TaintTrackingParameter::Public
private import TaintTrackingParameter::Private private import TaintTrackingParameter::Private
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements
DataFlowInternal::FullStateConfigSig { DataFlowInternal::FullStateConfigSig
{
import Config import Config
predicate isBarrier(DataFlow::Node node) { predicate isBarrier(DataFlow::Node node) {

View File

@@ -138,7 +138,8 @@ class ClassReflectivelyReadField extends ReflectivelyReadField {
* Consider all `JacksonSerializableField`s as reflectively read. * Consider all `JacksonSerializableField`s as reflectively read.
*/ */
class JacksonSerializableReflectivelyReadField extends ReflectivelyReadField, class JacksonSerializableReflectivelyReadField extends ReflectivelyReadField,
JacksonSerializableField { } JacksonSerializableField
{ }
/** /**
* A field that is used when applying Jackson mixins. * A field that is used when applying Jackson mixins.

View File

@@ -94,7 +94,8 @@ abstract class ReflectivelyConstructedClass extends EntryPoint, Class {
/** /**
* Classes that are deserialized by Jackson are reflectively constructed. * Classes that are deserialized by Jackson are reflectively constructed.
*/ */
library class JacksonReflectivelyConstructedClass extends ReflectivelyConstructedClass instanceof JacksonDeserializableType { library class JacksonReflectivelyConstructedClass extends ReflectivelyConstructedClass instanceof JacksonDeserializableType
{
override Callable getALiveCallable() { override Callable getALiveCallable() {
// Constructors may be called by Jackson, if they are a no-arg, they have a suitable annotation, // Constructors may be called by Jackson, if they are a no-arg, they have a suitable annotation,
// or inherit a suitable annotation through a mixin. // or inherit a suitable annotation through a mixin.
@@ -308,8 +309,8 @@ class FacesAccessibleMethodEntryPoint extends CallableEntryPoint {
* A Java Server Faces custom component, that is reflectively constructed by the framework when * A Java Server Faces custom component, that is reflectively constructed by the framework when
* used in a view (JSP or facelet). * used in a view (JSP or facelet).
*/ */
class FacesComponentReflectivelyConstructedClass extends ReflectivelyConstructedClass instanceof FacesComponent { class FacesComponentReflectivelyConstructedClass extends ReflectivelyConstructedClass instanceof FacesComponent
} { }
/** /**
* Entry point for EJB home interfaces. * Entry point for EJB home interfaces.
@@ -459,5 +460,5 @@ class ArbitraryXmlEntryPoint extends ReflectivelyConstructedClass {
deprecated class ArbitraryXMLEntryPoint = ArbitraryXmlEntryPoint; deprecated class ArbitraryXMLEntryPoint = ArbitraryXmlEntryPoint;
/** A Selenium PageObject, created by a call to PageFactory.initElements(..). */ /** A Selenium PageObject, created by a call to PageFactory.initElements(..). */
class SeleniumPageObjectEntryPoint extends ReflectivelyConstructedClass instanceof SeleniumPageObject { class SeleniumPageObjectEntryPoint extends ReflectivelyConstructedClass instanceof SeleniumPageObject
} { }

View File

@@ -33,8 +33,8 @@ class Struts1ActionEntryPoint extends EntryPoint, Class {
/** /**
* A struts 2 action class that is reflectively constructed. * A struts 2 action class that is reflectively constructed.
*/ */
class Struts2ReflectivelyConstructedAction extends ReflectivelyConstructedClass instanceof Struts2ActionClass { class Struts2ReflectivelyConstructedAction extends ReflectivelyConstructedClass instanceof Struts2ActionClass
} { }
/** /**
* A method called on a struts 2 action class when the action is activated. * A method called on a struts 2 action class when the action is activated.

View File

@@ -78,7 +78,8 @@ class JUnitCategory extends WhitelistedLiveClass {
/** /**
* A listener that will be reflectively constructed by TestNG. * A listener that will be reflectively constructed by TestNG.
*/ */
class TestNGReflectivelyConstructedListener extends ReflectivelyConstructedClass instanceof TestNGListenerImpl { class TestNGReflectivelyConstructedListener extends ReflectivelyConstructedClass instanceof TestNGListenerImpl
{
// Consider any class that implements a TestNG listener interface to be live. Listeners can be // Consider any class that implements a TestNG listener interface to be live. Listeners can be
// specified on the command line, in `testng.xml` files and in Ant build files, so it is safest // specified on the command line, in `testng.xml` files and in Ant build files, so it is safest
// to assume that all such listeners are live. // to assume that all such listeners are live.

View File

@@ -123,7 +123,8 @@ class StartServiceMethod extends Method {
/** Specifies that if an `Intent` is tainted, then so are its synthetic fields. */ /** Specifies that if an `Intent` is tainted, then so are its synthetic fields. */
private class IntentFieldsInheritTaint extends DataFlow::SyntheticFieldContent, private class IntentFieldsInheritTaint extends DataFlow::SyntheticFieldContent,
TaintInheritingContent { TaintInheritingContent
{
IntentFieldsInheritTaint() { this.getField().matches("android.content.Intent.%") } IntentFieldsInheritTaint() { this.getField().matches("android.content.Intent.%") }
} }

View File

@@ -35,6 +35,7 @@ private class SliceProviderLifecycleStep extends AdditionalValueStep {
} }
private class SliceActionsInheritTaint extends DataFlow::SyntheticFieldContent, private class SliceActionsInheritTaint extends DataFlow::SyntheticFieldContent,
TaintInheritingContent { TaintInheritingContent
{
SliceActionsInheritTaint() { this.getField() = "androidx.slice.Slice.action" } SliceActionsInheritTaint() { this.getField() = "androidx.slice.Slice.action" }
} }

View File

@@ -11,7 +11,8 @@ private class ParseAsMethod extends Method {
} }
} }
private class TypeLiteralToParseAsFlowConfiguration extends DataFlowForSerializability::Configuration { private class TypeLiteralToParseAsFlowConfiguration extends DataFlowForSerializability::Configuration
{
TypeLiteralToParseAsFlowConfiguration() { TypeLiteralToParseAsFlowConfiguration() {
this = "GoogleHttpClientApi::TypeLiteralToParseAsFlowConfiguration" this = "GoogleHttpClientApi::TypeLiteralToParseAsFlowConfiguration"
} }

View File

@@ -91,7 +91,8 @@ private class FieldReferencedJacksonSerializableType extends JacksonSerializable
/** A type whose values may be deserialized by the Jackson JSON framework. */ /** A type whose values may be deserialized by the Jackson JSON framework. */
abstract class JacksonDeserializableType extends Type { } abstract class JacksonDeserializableType extends Type { }
private class TypeLiteralToJacksonDatabindFlowConfiguration extends DataFlowForSerializability::Configuration { private class TypeLiteralToJacksonDatabindFlowConfiguration extends DataFlowForSerializability::Configuration
{
TypeLiteralToJacksonDatabindFlowConfiguration() { TypeLiteralToJacksonDatabindFlowConfiguration() {
this = "TypeLiteralToJacksonDatabindFlowConfiguration" this = "TypeLiteralToJacksonDatabindFlowConfiguration"
} }

View File

@@ -75,8 +75,8 @@ class ForbiddenSecurityConfigurationCallable extends ForbiddenCallable {
} }
/** A method or constructor involving serialization that may not be called by an EJB. */ /** A method or constructor involving serialization that may not be called by an EJB. */
class ForbiddenSerializationCallable extends ForbiddenCallable instanceof ForbiddenSerializationMethod { class ForbiddenSerializationCallable extends ForbiddenCallable instanceof ForbiddenSerializationMethod
} { }
/** A method or constructor involving network factory operations that may not be called by an EJB. */ /** A method or constructor involving network factory operations that may not be called by an EJB. */
class ForbiddenSetFactoryCallable extends ForbiddenCallable instanceof ForbiddenSetFactoryMethod { } class ForbiddenSetFactoryCallable extends ForbiddenCallable instanceof ForbiddenSetFactoryMethod { }

View File

@@ -115,7 +115,8 @@ private class IsWindowsFromApacheCommons extends IsWindowsGuard instanceof Field
IsWindowsFromApacheCommons() { isOsFromApacheCommons(this, "IS\\_OS\\_WINDOWS") } IsWindowsFromApacheCommons() { isOsFromApacheCommons(this, "IS\\_OS\\_WINDOWS") }
} }
private class IsSpecificWindowsVariantFromApacheCommons extends IsSpecificWindowsVariant instanceof FieldAccess { private class IsSpecificWindowsVariantFromApacheCommons extends IsSpecificWindowsVariant instanceof FieldAccess
{
IsSpecificWindowsVariantFromApacheCommons() { IsSpecificWindowsVariantFromApacheCommons() {
isOsFromApacheCommons(this, "IS\\_OS\\_WINDOWS\\_%") isOsFromApacheCommons(this, "IS\\_OS\\_WINDOWS\\_%")
} }
@@ -125,7 +126,8 @@ private class IsUnixFromApacheCommons extends IsUnixGuard instanceof FieldAccess
IsUnixFromApacheCommons() { isOsFromApacheCommons(this, "IS\\_OS\\_UNIX") } IsUnixFromApacheCommons() { isOsFromApacheCommons(this, "IS\\_OS\\_UNIX") }
} }
private class IsSpecificUnixVariantFromApacheCommons extends IsSpecificUnixVariant instanceof FieldAccess { private class IsSpecificUnixVariantFromApacheCommons extends IsSpecificUnixVariant instanceof FieldAccess
{
IsSpecificUnixVariantFromApacheCommons() { IsSpecificUnixVariantFromApacheCommons() {
isOsFromApacheCommons(this, isOsFromApacheCommons(this,
[ [

View File

@@ -47,7 +47,8 @@ private class DefaultFragmentInjectionSink extends FragmentInjectionSink {
DefaultFragmentInjectionSink() { sinkNode(this, "fragment-injection") } DefaultFragmentInjectionSink() { sinkNode(this, "fragment-injection") }
} }
private class DefaultFragmentInjectionAdditionalTaintStep extends FragmentInjectionAdditionalTaintStep { private class DefaultFragmentInjectionAdditionalTaintStep extends FragmentInjectionAdditionalTaintStep
{
override predicate step(DataFlow::Node n1, DataFlow::Node n2) { override predicate step(DataFlow::Node n1, DataFlow::Node n2) {
exists(ReflectiveClassIdentifierMethodAccess ma | exists(ReflectiveClassIdentifierMethodAccess ma |
ma.getArgument(0) = n1.asExpr() and ma = n2.asExpr() ma.getArgument(0) = n1.asExpr() and ma = n2.asExpr()

View File

@@ -45,7 +45,8 @@ class IntentUriPermissionManipulationAdditionalTaintStep extends Unit {
abstract predicate step(DataFlow::Node node1, DataFlow::Node node2); abstract predicate step(DataFlow::Node node1, DataFlow::Node node2);
} }
private class DefaultIntentUriPermissionManipulationSink extends IntentUriPermissionManipulationSink { private class DefaultIntentUriPermissionManipulationSink extends IntentUriPermissionManipulationSink
{
DefaultIntentUriPermissionManipulationSink() { DefaultIntentUriPermissionManipulationSink() {
exists(MethodAccess ma | ma.getMethod() instanceof ActivitySetResultMethod | exists(MethodAccess ma | ma.getMethod() instanceof ActivitySetResultMethod |
ma.getArgument(1) = this.asExpr() ma.getArgument(1) = this.asExpr()

View File

@@ -55,7 +55,8 @@ class JwtParserWithInsecureParseAdditionalFlowStep extends Unit {
} }
/** A set of additional flow steps to consider when working with JWT parsing related data flows. */ /** A set of additional flow steps to consider when working with JWT parsing related data flows. */
private class DefaultJwtParserWithInsecureParseAdditionalFlowStep extends JwtParserWithInsecureParseAdditionalFlowStep { private class DefaultJwtParserWithInsecureParseAdditionalFlowStep extends JwtParserWithInsecureParseAdditionalFlowStep
{
override predicate step(DataFlow::Node node1, DataFlow::Node node2) { override predicate step(DataFlow::Node node1, DataFlow::Node node2) {
jwtParserStep(node1.asExpr(), node2.asExpr()) jwtParserStep(node1.asExpr(), node2.asExpr())
} }

View File

@@ -34,7 +34,8 @@ private class DefaultRequestForgeryAdditionalTaintStep extends RequestForgeryAdd
} }
} }
private class TypePropertiesRequestForgeryAdditionalTaintStep extends RequestForgeryAdditionalTaintStep { private class TypePropertiesRequestForgeryAdditionalTaintStep extends RequestForgeryAdditionalTaintStep
{
override predicate propagatesTaint(DataFlow::Node pred, DataFlow::Node succ) { override predicate propagatesTaint(DataFlow::Node pred, DataFlow::Node succ) {
exists(MethodAccess ma | exists(MethodAccess ma |
// Properties props = new Properties(); // Properties props = new Properties();

View File

@@ -21,7 +21,8 @@ class SpelExpressionInjectionAdditionalTaintStep extends Unit {
} }
/** A set of additional taint steps to consider when taint tracking SpEL related data flows. */ /** A set of additional taint steps to consider when taint tracking SpEL related data flows. */
private class DefaultSpelExpressionInjectionAdditionalTaintStep extends SpelExpressionInjectionAdditionalTaintStep { private class DefaultSpelExpressionInjectionAdditionalTaintStep extends SpelExpressionInjectionAdditionalTaintStep
{
override predicate step(DataFlow::Node node1, DataFlow::Node node2) { override predicate step(DataFlow::Node node1, DataFlow::Node node2) {
expressionParsingStep(node1, node2) expressionParsingStep(node1, node2)
} }

View File

@@ -62,8 +62,8 @@ abstract class TemplateInjectionSanitizerWithState extends DataFlow::Node {
abstract predicate hasState(DataFlow::FlowState state); abstract predicate hasState(DataFlow::FlowState state);
} }
private class DefaultTemplateInjectionSource extends TemplateInjectionSource instanceof RemoteFlowSource { private class DefaultTemplateInjectionSource extends TemplateInjectionSource instanceof RemoteFlowSource
} { }
private class DefaultTemplateInjectionSink extends TemplateInjectionSink { private class DefaultTemplateInjectionSink extends TemplateInjectionSink {
DefaultTemplateInjectionSink() { sinkNode(this, "ssti") } DefaultTemplateInjectionSink() { sinkNode(this, "ssti") }

View File

@@ -60,7 +60,8 @@ private class DefaultXssSanitizer extends XssSanitizer {
} }
/** A configuration that tracks data from a servlet writer to an output method. */ /** A configuration that tracks data from a servlet writer to an output method. */
private class XssVulnerableWriterSourceToWritingMethodFlowConfig extends TaintTracking2::Configuration { private class XssVulnerableWriterSourceToWritingMethodFlowConfig extends TaintTracking2::Configuration
{
XssVulnerableWriterSourceToWritingMethodFlowConfig() { XssVulnerableWriterSourceToWritingMethodFlowConfig() {
this = "XSS::XssVulnerableWriterSourceToWritingMethodFlowConfig" this = "XSS::XssVulnerableWriterSourceToWritingMethodFlowConfig"
} }

View File

@@ -198,7 +198,8 @@ private class DocumentBuilderConstruction extends MethodAccess {
} }
} }
private class SafeDocumentBuilderFactoryToDocumentBuilderConstructionFlowConfig extends DataFlow3::Configuration { private class SafeDocumentBuilderFactoryToDocumentBuilderConstructionFlowConfig extends DataFlow3::Configuration
{
SafeDocumentBuilderFactoryToDocumentBuilderConstructionFlowConfig() { SafeDocumentBuilderFactoryToDocumentBuilderConstructionFlowConfig() {
this = "XmlParsers::SafeDocumentBuilderFactoryToDocumentBuilderConstructionFlowConfig" this = "XmlParsers::SafeDocumentBuilderFactoryToDocumentBuilderConstructionFlowConfig"
} }

View File

@@ -55,7 +55,8 @@ private predicate newTransformerOrTemplatesStep(DataFlow::Node n1, DataFlow::Nod
/** /**
* A data flow configuration for secure processing feature that is enabled on `TransformerFactory`. * A data flow configuration for secure processing feature that is enabled on `TransformerFactory`.
*/ */
private class TransformerFactoryWithSecureProcessingFeatureFlowConfig extends DataFlow2::Configuration { private class TransformerFactoryWithSecureProcessingFeatureFlowConfig extends DataFlow2::Configuration
{
TransformerFactoryWithSecureProcessingFeatureFlowConfig() { TransformerFactoryWithSecureProcessingFeatureFlowConfig() {
this = "TransformerFactoryWithSecureProcessingFeatureFlowConfig" this = "TransformerFactoryWithSecureProcessingFeatureFlowConfig"
} }

View File

@@ -27,25 +27,29 @@ abstract private class InsecureNettyObjectCreation extends ClassInstanceExpr {
abstract string splittingType(); abstract string splittingType();
} }
abstract private class RequestOrResponseSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation { abstract private class RequestOrResponseSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation
{
override string splittingType() { result = "Request splitting or response splitting" } override string splittingType() { result = "Request splitting or response splitting" }
} }
/** /**
* Request splitting can allowing an attacker to inject/smuggle an additional HTTP request into the socket connection. * Request splitting can allowing an attacker to inject/smuggle an additional HTTP request into the socket connection.
*/ */
abstract private class RequestSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation { abstract private class RequestSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation
{
override string splittingType() { result = "Request splitting" } override string splittingType() { result = "Request splitting" }
} }
/** /**
* Response splitting can lead to HTTP vulnerabilities like XSS and cache poisoning. * Response splitting can lead to HTTP vulnerabilities like XSS and cache poisoning.
*/ */
abstract private class ResponseSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation { abstract private class ResponseSplittingInsecureNettyObjectCreation extends InsecureNettyObjectCreation
{
override string splittingType() { result = "Response splitting" } override string splittingType() { result = "Response splitting" }
} }
private class InsecureDefaultHttpHeadersClassInstantiation extends RequestOrResponseSplittingInsecureNettyObjectCreation { private class InsecureDefaultHttpHeadersClassInstantiation extends RequestOrResponseSplittingInsecureNettyObjectCreation
{
InsecureDefaultHttpHeadersClassInstantiation() { InsecureDefaultHttpHeadersClassInstantiation() {
this.getConstructedType() this.getConstructedType()
.hasQualifiedName("io.netty.handler.codec.http", .hasQualifiedName("io.netty.handler.codec.http",
@@ -54,21 +58,24 @@ private class InsecureDefaultHttpHeadersClassInstantiation extends RequestOrResp
} }
} }
private class InsecureDefaultHttpResponseClassInstantiation extends ResponseSplittingInsecureNettyObjectCreation { private class InsecureDefaultHttpResponseClassInstantiation extends ResponseSplittingInsecureNettyObjectCreation
{
InsecureDefaultHttpResponseClassInstantiation() { InsecureDefaultHttpResponseClassInstantiation() {
this.getConstructedType().hasQualifiedName("io.netty.handler.codec.http", "DefaultHttpResponse") and this.getConstructedType().hasQualifiedName("io.netty.handler.codec.http", "DefaultHttpResponse") and
vulnerableArgumentIndex = 2 vulnerableArgumentIndex = 2
} }
} }
private class InsecureDefaultHttpRequestClassInstantiation extends RequestSplittingInsecureNettyObjectCreation { private class InsecureDefaultHttpRequestClassInstantiation extends RequestSplittingInsecureNettyObjectCreation
{
InsecureDefaultHttpRequestClassInstantiation() { InsecureDefaultHttpRequestClassInstantiation() {
this.getConstructedType().hasQualifiedName("io.netty.handler.codec.http", "DefaultHttpRequest") and this.getConstructedType().hasQualifiedName("io.netty.handler.codec.http", "DefaultHttpRequest") and
vulnerableArgumentIndex = 3 vulnerableArgumentIndex = 3
} }
} }
private class InsecureDefaultFullHttpResponseClassInstantiation extends ResponseSplittingInsecureNettyObjectCreation { private class InsecureDefaultFullHttpResponseClassInstantiation extends ResponseSplittingInsecureNettyObjectCreation
{
InsecureDefaultFullHttpResponseClassInstantiation() { InsecureDefaultFullHttpResponseClassInstantiation() {
this.getConstructedType() this.getConstructedType()
.hasQualifiedName("io.netty.handler.codec.http", "DefaultFullHttpResponse") and .hasQualifiedName("io.netty.handler.codec.http", "DefaultFullHttpResponse") and
@@ -76,7 +83,8 @@ private class InsecureDefaultFullHttpResponseClassInstantiation extends Response
} }
} }
private class InsecureDefaultFullHttpRequestClassInstantiation extends RequestSplittingInsecureNettyObjectCreation { private class InsecureDefaultFullHttpRequestClassInstantiation extends RequestSplittingInsecureNettyObjectCreation
{
InsecureDefaultFullHttpRequestClassInstantiation() { InsecureDefaultFullHttpRequestClassInstantiation() {
this.getConstructedType() this.getConstructedType()
.hasQualifiedName("io.netty.handler.codec.http", "DefaultFullHttpRequest") and .hasQualifiedName("io.netty.handler.codec.http", "DefaultFullHttpRequest") and

View File

@@ -81,8 +81,8 @@ private class CompareSink extends ClientSuppliedIpUsedInSecurityCheckSink {
} }
/** A data flow sink for sql operation. */ /** A data flow sink for sql operation. */
private class SqlOperationSink extends ClientSuppliedIpUsedInSecurityCheckSink instanceof QueryInjectionSink { private class SqlOperationSink extends ClientSuppliedIpUsedInSecurityCheckSink instanceof QueryInjectionSink
} { }
/** A method that split string. */ /** A method that split string. */
class SplitMethod extends Method { class SplitMethod extends Method {

Some files were not shown because too many files have changed in this diff Show More