taint_assume_safe_numbers
- Value
trueorfalse- Default
false- See also
taint_assume_safe_booleans
With taint_assume_safe_numbers: true, a value of integer or floating-point type is clean, even when it was computed from tainted data, as Integer.parseInt(page) is from page.
As with taint_assume_safe_booleans, the option applies only where Opengrep knows the type: in Java, from declared variable types and method return types; in Go and TypeScript, from the declared type of a variable only. In Python, the option has no effect.
Examples
Numbers in Java
The rule page-logged turns the option on.
Paging.yaml
rules: - id: page-logged-default mode: taint pattern-sources: - pattern: request.getParameter(...) pattern-sinks: - pattern: log.info(...) message: request parameter is logged languages: [java] severity: WARNING - id: page-logged mode: taint pattern-sources: - pattern: request.getParameter(...) pattern-sinks: - pattern: log.info(...) message: request parameter is logged languages: [java] severity: WARNING options: taint_assume_safe_numbers: truePaging.java
class Paging { void handle() { String page = request.getParameter("page"); // ruleid: page-logged-default, page-logged log.info(page.trim()); int number = Integer.parseInt(page); // ruleid: page-logged-default log.info(number); // ruleid: page-logged-default log.info(page.length()); }}Command and result
$ opengrep test .
2/2: ✓ All tests passed
No tests for fixes found.No effect in Python
sizes.yaml
rules: - id: size-logged mode: taint pattern-sources: - pattern: input(...) pattern-sinks: - pattern: log(...) message: user input is logged languages: [python] severity: WARNING options: taint_assume_safe_numbers: truesizes.py
text = input()number = int(text)# ruleid: size-loggedlog(number)size = len(text)# ruleid: size-loggedlog(size)Command and result
$ opengrep test .
1/1: ✓ All tests passed
No tests for fixes found.