github / github/codeql

cpp: how to use macro argument as dataflow sink

未關閉
#21,824 3 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
CodeQL
星號
10.1k
分支
2.1k
平均合併
2 天 15 小時
30 天內合併 PR
141

描述

I would like to do something like this:
```codeql
predicate isSink(DataFlow::Node sink) {
exists(MacroInvocation m |
sink.asExpr() = m.getArgument(0)
and m.getTarget().getName() = "my_cool_macro"
)
}
```
But `getArgument` is not defined, and `getExpandedArgument` returns a string. Doing `sink.asExpr().toString() = m.getExpandedArgument(0)` returns zero matches.

How do I use macros in dataflow?

貢獻指南

開啟貢獻指南

研究方向

從 issue 中的 CodeQL predicate 開始,並閱讀其中提到的 MacroInvocation、getArgument 和 getExpandedArgument entry point。確定巨集引數如何表示為資料流節點,或確認是否不支援這種表示方式,並記錄一個可運作的範例或該限制,讓這個問題有明確的答案。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
cpp
領域
security
Issue 類型
文件
難度
4/5
預估耗時
3-5 天
活躍度
冷清
描述清晰度
需要釐清
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。