github / github/codeql

[CPP][Questions]No effective API to qeury macro used in function parameter declaration

Đang mở
#8,497 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
C++ question
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ả

Hello all,

Recently I'm interested in writing queries to detect common vulnerability pattern specific for Linux kernel codebase. I find that `__user` marco is used to indicate parameter is user mode pointer, for example
```cpp
#define __user //empty macro body

static int sg_scsi_ioctl(struct request_queue *q, fmode_t mode,
struct scsi_ioctl_command __user *sic) //sic is a user mode pointer
```

I want to write a query to get all user mode pointer defined in function parameter declaration, I tried to find avaliable API defined in `Marco/MacroAccess/MarcoInovation/Function/Function/FunctionDeclarationEntry/ParameterDeclarationEntry`, but I can not find one can be used for my purpose.

I have no way but to query macro used in function parameter declaration by combining `MacroAccess` and `Location`, the following code may be work, but it prone to be false positive and ugly:(

```ql
class UserParameterDeclarationEntry extends ParameterDeclarationEntry{
UserParameterDeclarationEntry(){
exists(MacroAccess m|
m.getMacroName() = "__user"
and m.getFile() = this.getFile()
and m.getLocation().getEndLine() = this.getLocation().getEndLine()
)
}
}
```

So I hope you guys can be kind enougth to help me find a more effective way to query specific macro in function parameter declaration, thank you:)

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.