Files
codeql/python/ql/src/Exceptions/RaisingTuple.ql
Rasmus Lerchedahl Petersen 93fcaf24c1 python: RaisingTuple.ql to not use poins-to
Use local dataflow instead and simply check for tuple literals.
2022-09-01 21:45:57 +02:00

26 lines
787 B
Plaintext

/**
* @name Raising a tuple
* @description Raising a tuple will result in all but the first element being discarded
* @kind problem
* @tags maintainability
* @problem.severity warning
* @sub-severity high
* @precision very-high
* @id py/raises-tuple
*/
import python
import semmle.python.dataflow.new.DataFlow
from Raise r, DataFlow::LocalSourceNode origin
where
exists(DataFlow::Node exception | exception.asExpr() = r.getException() |
origin.flowsTo(exception)
) and
origin.asExpr() instanceof Tuple and
major_version() = 2
/* Raising a tuple is a type error in Python 3, so is handled by the IllegalRaise query. */
select r,
"Raising $@ will result in the first element (recursively) being raised and all other elements being discarded.",
origin, "a tuple"