github / github/codeql

[Python] General issue: Wrong domination is reported in control flow analysis

オープン
#20,551 コメント 1 件 リアクション 0 件 担当者 1 名 @tausbn が担当を希望しています GitHub で見る
question
主要言語
CodeQL
スター
10.1k
フォーク
2.1k
平均マージ
2日 15時間
マージ済み PR(30日)
141

説明

**Description of the issue**
I have a python code and ql as follows:
``` python
def EXEC():
raise Exception("Test exception")

def API():
pass

def DUMMY():
pass

try:
EXEC()
API()
except Exception as e:
raise(e)
finally:
DUMMY()
```
``` ql
/**
* @kind problem
* @problem.severity warning
* @id python/find-if
*/

import python

predicate isCall(Call call, string name) {
exists (Name n | call.getFunc() = n and n.getId() = name)
}

from Call callAPI, Call callDummy
where
isCall(callAPI, "API") and isCall(callDummy, "DUMMY") and
not exists (ControlFlowNode nAPI, ControlFlowNode nDummy |
nAPI = callAPI.getAFlowNode() and nDummy = callDummy.getAFlowNode() and
nAPI.dominates(nDummy))
select callAPI, callAPI.toString()
```

The ql code simply check if the call to `API()` does not dominate the call to `DUMMY()`
**Expected Behaviour**: Call to `API()` is reported because `API()` does not dominate `DUMMY()`.
**Actual Result**: nothing is reported

CodeQL version: `CodeQL command-line toolchain release 2.23.1.`

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。