cpp: how to use macro argument as dataflow sink
- Ngôn ngữ chính
- CodeQL
- Star
- 10.1k
- Fork
- 2.1k
- Merge trung bình
- 2 ngày 15 giờ
- Pull request đã merge (30 ngày)
- 141
Mô tả
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?
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với predicate CodeQL trong issue và đọc các entry point được đề cập là MacroInvocation, getArgument và getExpandedArgument. Xác định cách các đối số macro có thể được biểu diễn dưới dạng các nút luồng dữ liệu, hoặc liệu điều này có được hỗ trợ hay không, rồi ghi lại một ví dụ hoạt động được hoặc giới hạn đó để câu hỏi có một câu trả lời dứt khoát.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp
- Lĩnh vực
- security
- Loại issue
- Tài liệu
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 35/100