github / github/codeql

Java: `Argument.isExplicitVarargsArray()` erroneously holds for primitive array as element of generic varargs parameter

未關閉
#5,929 1 則留言 0 個 reaction 已指派 1 人 已被 @aschackmull 認領 在 GitHub 檢視
question
主要語言
CodeQL
星號
10.1k
分支
2.1k
平均合併
2 天 15 小時
30 天內合併 PR
141

描述

### Version
CodeQL CLI version: 2.5.5
CodeQL c4f604bafe146900e5d4e7265afc1822cabfa88a

### Description
The predicate `Argument.isExplicitVarargsArray()` erroneously holds when a primitive array (e.g. `int[]`) is used as single element for a varargs parameter of generic type.
Note that a non-generic varargs parameters (i.e. `Object...`) does not seem to be affected.

Java:
```java
class VarargsTest {
void sink(T... objects) { }

void test() {
// Erroneously claims this is an explicit varargs array
sink(new int[10]);

sink(1, 2, 3);
sink("a", "b");
sink(1, "a");

Object o = null;
sink(o);
sink(o, o);
}
}
```

Query:
```ql
import java

from Argument arg
where arg.isExplicitVarargsArray()
select arg
```

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

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

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