Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

False Negative:ArrayIndexOutOfBounds.ql

Offen
#21,528 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
java
Bereich
security

Rechercherichtung

Beginne mit Likely Bugs/Collections/ArrayIndexOutOfBounds.ql und vergleiche, wie die Datei direkten Array-Zugriff im Vergleich zu Zugriffen über Hilfsmethoden, Aliase und berechnete Indizes behandelt. Reproduziere die Java-Beispiele aus dem Issue und überprüfe anschließend, dass die Query jeden Zugriff außerhalb der Array-Grenzen meldet, einschließlich negativer Indizes.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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
    }
}
Vorherrschende Sprache
CodeQL
Sterne
10.1k
Forks
2.1k
Ø Merge
2 T. 16 Std.
Gemergte PRs (30 T.)
143

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus github/codeql

Alle Issues in github/codeql

Ähnliche Issues

Weitere Issues zu Security

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.