forked from github/codeql
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRaisingTuple.ql
More file actions
25 lines (23 loc) · 787 Bytes
/
RaisingTuple.ql
File metadata and controls
25 lines (23 loc) · 787 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* @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 a $@ will result in the first element (recursively) being raised and all other elements being discarded.",
origin, "tuple"