False Negative:ArrayIndexOutOfBounds.ql
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza con Likely Bugs/Collections/ArrayIndexOutOfBounds.ql y compara cómo gestiona el acceso directo a arrays frente a los accesos mediante métodos auxiliares, alias e índices calculados. Reproduce los ejemplos de Java del issue y verifica después que la query informa de cada acceso fuera de límites, incluidos los índices negativos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Version
codeql 2.23.9
When I detect the code like this using Likely Bugs/Collections/ArrayIndexOutOfBounds.ql, the problem is reported normally:
package scensct.core.pos;
public class PosCase1 {
public static void main(String[] args) {
int[] arr = new int[5];
int index = 10; // Unbounded index, no constraint check before access
int value = arr[index]; // Direct access with potentially out-of-bounds index // [REPORTED LINE]
}
}
However, when I use a mediator variable or call a mediator function, ArrayIndexOutOfBounds.ql fails to detect the problem:
package scensct.var.pos;
public class PosCase1_Var4 {
public static void main(String[] args) {
int[] arr = createArray();
int index = getIndex();
int value = arr[index]; // Access with index from method
}
private static int[] createArray() {
return new int[5];
}
private static int getIndex() {
return 10;
}
}
package scensct.var.pos;
public class PosCase2_Var4 {
public static void main(String[] args) {
int[] arr = new int[5];
int K = 5;
// Introduce an alias reference
int[] alias = arr;
int index = K;
int value = alias[index];
}
}
package scensct.var.pos;
public class PosCase2_Var5 {
private static int getIndex(int k) {
return k;
}
public static void main(String[] args) {
int[] arr = new int[5];
int K = 5;
// Move index computation to a helper method
int index = getIndex(K);
int value = arr[index];
}
}
package scensct.core.pos;
public class PosCase3 {
public static void main(String[] args) {
int[] arr = new int[5];
int K = -1; // Negative bound
int index = K + 0; // Index bounded below by negative K
int value = arr[index]; // Access with potentially negative index
}
}
- Lenguaje dominante
- CodeQL
- Estrellas
- 10.1k
- Forks
- 2.1k
- Merge medio
- 2 d 16 h
- PR fusionados (30 d)
- 143
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de github/codeql
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
false-positive javascript
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
C#: cs/simplifiable-boolean-expression false positive on Nullable<bool> compared with a literal Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
false-positive
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Todos los issues de github/codeql
Issues similares
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
canonical/paas-charm#368 · 1 comentario ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
palladius/rails8-app-on-gcp#142 ·
-
addition to tracking list Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
StevenBlack/hosts#3256 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
corsairdev/corsair#1764 ·
-
oblt-aw/detector/security
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100