GeneralPurpose-InvalidArgumentInCall

The validity of values passed to library functions shall be checked

Required inputs: IR, StaticSemanticAnalysis

Possible Messages

Key

Text

Severity

Disabled

argument_violation

Argument not within allowed values

None

False

local_variable_as_argument

Argument may not be a local variable.

None

False

Options

argument_checks

argument_checks

Type: dict[str, dict[str, str]]

Default:

{
   'First argument of "calloc" may not be negative': {
      'Allowed': '[0.0-DBL_MAX]',
      'Functions': 'calloc',
      'Parameter': '0'
   },
   'First argument of "malloc" may not be negative': {
      'Allowed': '[0.0-DBL_MAX]',
      'Functions': 'malloc',
      'Parameter': '0'
   },
   'Second argument of "calloc" may not be negative': {
      'Allowed': '[0.0-DBL_MAX]',
      'Functions': 'calloc',
      'Parameter': '1'
   },
   'Second argument of "realloc" may not be negative': {
      'Allowed': '[0.0-DBL_MAX]',
      'Functions': 'realloc',
      'Parameter': '1'
   }
}
Used when StaticSemanticAnalysis is used as analysis engine. Configuration of (dis)allowed values. This is a dict key -> dict with keys 'Functions', 'Parameter', and 'Allowed'/'Disallowed'. The parameter number counting starts at 0. Arguments passed in for this parameters are checked against the value specification given with '(Dis)allowed'.
 

no_local_arguments

no_local_arguments

Type: dict[bauhaus.analysis.config.QualifiedName, int]

Default:

{
   'pthread_once': 0
}
Map of function names and argument position that may not be a local variable.
 

precondition_checks

precondition_checks : set[bauhaus.analysis.config.FunctionName] = {'__builtin___strcpy_chk', 'calloc', 'malloc', 'realloc', 'strcpy'}

When a modular semantic analysis is used as analysis engine: check preconditions of functions whose unqualified names are listed in this option. The preconditions are specified via the pre_conditions option of rules in Analysis/AnalysisControl/Environment/Externals. To create a new rule, copy Externals-FunctionSummary and adjust the functions option to match a set of functions to which the preconditions should apply. Then set pre_conditions according to the required preconditions, e.g., @param0 > 0 or @param0 == 0 || @param0 == 1.