mate.build.signatures module

class mate.build.signatures.ArgPointsToAggregateSelector(index: int)

Bases: mate.build.signatures.SignatureSelector

Parameters

index (int) –

Return type

None

argument_types: List[type] = [<class 'int'>]
class mate.build.signatures.ArgPointsToSelector(index: int)

Bases: mate.build.signatures.SignatureSelector

Parameters

index (int) –

Return type

None

argument_types: List[type] = [<class 'int'>]
class mate.build.signatures.ArgReachableSelector(index: int)

Bases: mate.build.signatures.SignatureSelector

Parameters

index (int) –

Return type

None

argument_types: List[type] = [<class 'int'>]
class mate.build.signatures.ArgSelector(index: int)

Bases: mate.build.signatures.SignatureSelector

Parameters

index (int) –

Return type

None

argument_types: List[type] = [<class 'int'>]
class mate.build.signatures.DataflowSignature(function: Pattern, tags: List[str], fromSelectors: Dict[str, List[SignatureSelector]], toSelectors: List[SignatureSelector], deallocator: Optional[str])

Bases: mate.build.signatures.Signature

Parameters
  • function (Pattern) –

  • tags (List[str]) –

  • fromSelectors (Dict[str, List[SignatureSelector]]) –

  • toSelectors (List[SignatureSelector]) –

  • deallocator (Optional[str]) –

Return type

None

apply_to_cpg(build: mate_query.db.Build, cpg: mate_query.db.Graph, session: sqlalchemy.orm.session.Session, check_duplicates: bool = True) None
Parameters
Return type

None

class mate.build.signatures.FormatSpecifier(param_no: 'Optional[ParamNo]', flags: 'str', width: "Optional[Union[int, Literal['*']]]", precision: "Optional[Union[int, Literal['*'], ParamNo]]", type_modifier: 'Optional[str]', conversion: 'str')

Bases: object

Parameters
  • param_no (Optional[mate.build.signatures.ParamNo]) –

  • flags (str) –

  • width (Optional[Union[int, Literal['*']]]) –

  • precision (Optional[Union[int, Literal['*'], mate.build.signatures.ParamNo]]) –

  • type_modifier (Optional[str]) –

  • conversion (str) –

Return type

None

conversion: str
flags: str
param_no: Optional[mate.build.signatures.ParamNo]
precision: Optional[Union[int, Literal['*'], mate.build.signatures.ParamNo]]
type_modifier: Optional[str]
width: Optional[Union[int, Literal['*']]]
class mate.build.signatures.FormatStringReadSelector(index: int)

Bases: mate.build.signatures.SignatureSelector

Parameters

index (int) –

Return type

None

argument_types: List[type] = [<class 'int'>]
class mate.build.signatures.FormatStringWriteSelector(index: int)

Bases: mate.build.signatures.SignatureSelector

Parameters

index (int) –

Return type

None

argument_types: List[type] = [<class 'int'>]
class mate.build.signatures.GlobalSelector(global_name: str)

Bases: mate.build.signatures.SignatureSelector

Parameters

global_name (str) –

Return type

None

argument_types: List[type] = [<class 'str'>]
class mate.build.signatures.InputSignature(function: Pattern, tags: List[str], selectors: List[SignatureSelector])

Bases: mate.build.signatures.Signature

Parameters
  • function (Pattern) –

  • tags (List[str]) –

  • selectors (List[SignatureSelector]) –

Return type

None

apply_to_cpg(build: mate_query.db.Build, cpg: mate_query.db.Graph, session: sqlalchemy.orm.session.Session, check_duplicates: bool = True) None
Parameters
Return type

None

exception mate.build.signatures.InvalidSignature(message: str = 'Invalid signature')

Bases: Exception

Parameters

message (str) –

Return type

None

class mate.build.signatures.OutputSignature(function: Pattern, tags: List[str], selectors: List[SignatureSelector])

Bases: mate.build.signatures.Signature

Parameters
  • function (Pattern) –

  • tags (List[str]) –

  • selectors (List[SignatureSelector]) –

Return type

None

apply_to_cpg(build: mate_query.db.Build, cpg: mate_query.db.Graph, session: sqlalchemy.orm.session.Session, check_duplicates: bool = True) None
Parameters
Return type

None

class mate.build.signatures.ParamNo(num: 'int')

Bases: object

Parameters

num (int) –

Return type

None

num: int
class mate.build.signatures.ReturnPointsToAggregateSelector

Bases: mate.build.signatures.SignatureSelector

argument_types: List[type] = []
class mate.build.signatures.ReturnPointsToSelector

Bases: mate.build.signatures.SignatureSelector

argument_types: List[type] = []
class mate.build.signatures.ReturnReachableSelector

Bases: mate.build.signatures.SignatureSelector

argument_types: List[type] = []
class mate.build.signatures.ReturnSelector

Bases: mate.build.signatures.SignatureSelector

argument_types: List[type] = []
class mate.build.signatures.Signature

Bases: abc.ABC

abstract apply_to_cpg(build: mate_query.db.Build, cpg: mate_query.db.Graph, session: sqlalchemy.orm.session.Session, check_duplicates: bool) None
Parameters
Return type

None

class mate.build.signatures.SignatureSelector

Bases: abc.ABC

argument_types: List[type]
classmethod parse_arguments(arguments: List[Union[int, str]]) mate.build.signatures.SignatureSelector
Parameters

arguments (List[Union[int, str]]) –

Return type

mate.build.signatures.SignatureSelector

exception mate.build.signatures.UnknownSignature(message: str = 'Unknown signature')

Bases: Exception

Parameters

message (str) –

Return type

None

mate.build.signatures.load_signatures(raw_sigs: Dict[str, List[Any]]) List[mate.build.signatures.Signature]
Parameters

raw_sigs (Dict[str, List[Any]]) –

Return type

List[mate.build.signatures.Signature]

mate.build.signatures.parse_cpg_signature(function: Pattern, signame: str, sigcontent: Dict) Signature
Parameters
  • function (Pattern) –

  • signame (str) –

  • sigcontent (Dict) –

Return type

Signature

mate.build.signatures.parse_dataflow_signature(function: Pattern, sigcontent: Dict) DataflowSignature
Parameters
  • function (Pattern) –

  • sigcontent (Dict) –

Return type

DataflowSignature

mate.build.signatures.parse_dataflow_type(dataflow_spec: Dict[str, Any]) Dict[str, List[mate.build.signatures.SignatureSelector]]

Extracts the dataflow type and its consituent selectors.

The return value is a dictionary with one key for each value in _DATAFLOW_TYPES, whose value is a list of signature selectors corresponding to that dataflow type.

Parameters

dataflow_spec (Dict[str, Any]) –

Return type

Dict[str, List[mate.build.signatures.SignatureSelector]]

mate.build.signatures.parse_input_signature(function: Pattern, sigcontent: Dict) InputSignature
Parameters
  • function (Pattern) –

  • sigcontent (Dict) –

Return type

InputSignature

mate.build.signatures.parse_output_signature(function: Pattern, sigcontent: Dict) OutputSignature
Parameters
  • function (Pattern) –

  • sigcontent (Dict) –

Return type

OutputSignature

mate.build.signatures.parse_selector(selector: Dict[str, Any]) mate.build.signatures.SignatureSelector
Parameters

selector (Dict[str, Any]) –

Return type

mate.build.signatures.SignatureSelector

mate.build.signatures.process_cpg_signatures(signatures: List[mate.build.signatures.Signature], build: mate_query.db.Build, cpg: mate_query.db.Graph, session: sqlalchemy.orm.session.Session, check_duplicates: bool) None
Parameters
Return type

None