bazel-0003 + kicad-0002: build toolchain feature check + PCB zone filler O(Z²×L²); count 601→603
This commit is contained in:
parent
1d6a8b8ccd
commit
212d313185
292 changed files with 924 additions and 7 deletions
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000001
|
||||
# Apache ActiveMQ CWE-407 Scan — CLEAN (deeper scan, beyond activemq-0001)
|
||||
|
||||
**Date:** 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000345
|
||||
# actix-web-0001: introspection update_unique Vec::contains() O(N×M) during route registration
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000346
|
||||
# actix-web-0002: WebSocket handshake protocol negotiation O(R×P) per upgrade request
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000344
|
||||
# actix-0001 — CWE-407: introspection `update_unique` O(R×G) Vec linear dedup
|
||||
|
||||
**Project:** actix-web
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000347
|
||||
# airflow-0001 — O(N²) Topological Sort in TaskGroup
|
||||
|
||||
**Severity:** HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000005
|
||||
# ans-0001: role get_vars() seen-list O(D²) deduplication over transitive dependencies
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000005
|
||||
# ansible-0001: Role.get_vars() seen-list O(D²) deduplication
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000006
|
||||
# ans-0002: role _load_role_data() collections list O(C) membership tests per role load
|
||||
|
||||
**Severity:** LOW
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000348
|
||||
## Apache Ant — CWE-407 Scan Result: CLEAN
|
||||
|
||||
Scanned: `src/main/org/apache/tools/ant/` (depth=1 clone, 2026-03-27)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000349
|
||||
# argo-0001 — O(N) Linear Scan in GetTask() Called Inside DAG Execution Loop
|
||||
|
||||
**Severity:** HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000350
|
||||
# artemis-0001: BindingsImpl routeFromCluster O(R×A) → O(R+A)
|
||||
|
||||
## Location
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000350
|
||||
# ActiveMQ Artemis CWE-407 Scan — CLEAN (beyond artemis-0001)
|
||||
|
||||
**Date:** 2026-03-28
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000351
|
||||
# asterisk-0003: CDR Variable Merge O(B×V) Quadratic Membership Scan
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000352
|
||||
# axum — CWE-407 Scan Result: CLEAN
|
||||
|
||||
**Date:** 2026-03-27
|
||||
|
|
|
|||
57
defects/bazel/patch/bazel-0003-feature-selection-hashset.md
Normal file
57
defects/bazel/patch/bazel-0003-feature-selection-hashset.md
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# bazel-0003: FeatureSelection ImmutableList.contains O(P×S×L) → O(P×S) with HashSet
|
||||
|
||||
## Classification
|
||||
|
||||
| Field | Value |
|
||||
|-------------|-------|
|
||||
| CWE | CWE-407 Inefficient Algorithmic Complexity |
|
||||
| Severity | MEDIUM |
|
||||
| Component | `src/main/java/com/google/devtools/build/lib/rules/cpp/FeatureSelection.java:159` |
|
||||
| Function | `FeatureSelection.run()` — provides-conflict check |
|
||||
| Hot path | Once per action type per C++ target in `computeFeatureConfiguration()` |
|
||||
| Status | PATCHED (unit test PASS) |
|
||||
|
||||
## Defect
|
||||
|
||||
`FeatureSelection.run()` iterates over `provides.keys()` (P unique provide-strings) and
|
||||
for each iterates `provides.get(provided)` (S selectables), calling
|
||||
`enabledActivatablesInOrder.contains(...)` — an O(L) scan of an `ImmutableList`:
|
||||
|
||||
```java
|
||||
// FeatureSelection.java:159
|
||||
ImmutableList<CrosstoolSelectable> enabledActivatablesInOrder = ...; // L entries
|
||||
|
||||
for (String provided : provides.keys()) { // P provide-strings
|
||||
for (CrosstoolSelectable selectable : provides.get(provided)) { // S selectables
|
||||
if (enabledActivatablesInOrder.contains( // O(L) linear scan
|
||||
selectableProvidingString)) {
|
||||
...
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`ImmutableList.contains()` is O(L) — walks every element. With P=7, S=6, L=80:
|
||||
**~3,360 comparisons per call** vs ~42 with a HashSet (80×).
|
||||
|
||||
`computeFeatureConfiguration()` is called once per action type per target in C++ builds.
|
||||
Large monorepo builds with thousands of C++ targets hit this path repeatedly.
|
||||
|
||||
## Fix
|
||||
|
||||
Build a `HashSet<CrosstoolSelectable>` from `enabledActivatablesInOrder` once before the
|
||||
outer loop:
|
||||
|
||||
```java
|
||||
Set<CrosstoolSelectable> enabledSet = new HashSet<>(enabledActivatablesInOrder);
|
||||
|
||||
for (String provided : provides.keys()) {
|
||||
for (CrosstoolSelectable selectable : provides.get(provided)) {
|
||||
if (enabledSet.contains(selectableProvidingString)) { // O(1)
|
||||
...
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Speedup: ~80× at realistic scale (L=80, P=7, S=6).
|
||||
151
defects/bazel/unit/BazelFeatureSelectionAlgorithmTest.java
Normal file
151
defects/bazel/unit/BazelFeatureSelectionAlgorithmTest.java
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
package unit;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Models Bazel FeatureSelection.run() provides-conflict check.
|
||||
*
|
||||
* SLOW: O(P×S×L) — ImmutableList.contains() O(L) per selectable in P×S nested loops.
|
||||
* FAST: O(P×S) — HashSet built once from enabledList; O(1) per lookup.
|
||||
*
|
||||
* CWE-407: src/main/java/com/google/devtools/build/lib/rules/cpp/FeatureSelection.java:159
|
||||
*/
|
||||
public class BazelFeatureSelectionAlgorithmTest {
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Slow — ImmutableList.contains() O(L) per lookup
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
static class SlowFeatureSelection {
|
||||
long cmpOps = 0;
|
||||
|
||||
boolean listContains(List<String> list, String val) {
|
||||
for (String s : list) {
|
||||
cmpOps++;
|
||||
if (s.equals(val)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* O(P × S × L): for each provide × selectable, check enabledList membership.
|
||||
* Returns count of conflict checks performed.
|
||||
*/
|
||||
int run(List<String> enabledList,
|
||||
Map<String, List<String>> providesMap) {
|
||||
int conflicts = 0;
|
||||
for (Map.Entry<String, List<String>> entry : providesMap.entrySet()) {
|
||||
for (String selectable : entry.getValue()) {
|
||||
if (listContains(enabledList, selectable)) {
|
||||
conflicts++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return conflicts;
|
||||
}
|
||||
|
||||
long ops(List<String> enabledList, Map<String, List<String>> providesMap) {
|
||||
cmpOps = 0;
|
||||
run(enabledList, providesMap);
|
||||
return cmpOps;
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Fast — HashSet built once before loop
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
static class FastFeatureSelection {
|
||||
long cmpOps = 0;
|
||||
|
||||
int run(List<String> enabledList,
|
||||
Map<String, List<String>> providesMap) {
|
||||
Set<String> enabledSet = new HashSet<>(enabledList);
|
||||
cmpOps += enabledList.size(); // build cost
|
||||
int conflicts = 0;
|
||||
for (Map.Entry<String, List<String>> entry : providesMap.entrySet()) {
|
||||
for (String selectable : entry.getValue()) {
|
||||
cmpOps++;
|
||||
if (enabledSet.contains(selectable)) {
|
||||
conflicts++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return conflicts;
|
||||
}
|
||||
|
||||
long ops(List<String> enabledList, Map<String, List<String>> providesMap) {
|
||||
cmpOps = 0;
|
||||
run(enabledList, providesMap);
|
||||
return cmpOps;
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Build test data
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
static List<String> makeEnabledList(int l) {
|
||||
List<String> list = new ArrayList<>();
|
||||
for (int i = 0; i < l; i++) list.add("feature_" + i);
|
||||
return list;
|
||||
}
|
||||
|
||||
static Map<String, List<String>> makeProvidesMap(int p, int s, int overlapStart) {
|
||||
Map<String, List<String>> map = new LinkedHashMap<>();
|
||||
for (int i = 0; i < p; i++) {
|
||||
List<String> sels = new ArrayList<>();
|
||||
for (int j = 0; j < s; j++) {
|
||||
// Some selectables are in enabledList (conflicts), some not
|
||||
sels.add("feature_" + (overlapStart + i * s + j));
|
||||
}
|
||||
map.put("provide_" + i, sels);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
SlowFeatureSelection slow = new SlowFeatureSelection();
|
||||
FastFeatureSelection fast = new FastFeatureSelection();
|
||||
|
||||
int passed = 0, total = 0;
|
||||
|
||||
System.out.println("=== bazel-0003: FeatureSelection ImmutableList.contains O(P×S×L) ===");
|
||||
|
||||
// (L, P, S) configurations matching realistic Bazel C++ toolchain sizes
|
||||
int[][] configs = {
|
||||
{50, 7, 6}, // small toolchain
|
||||
{80, 7, 6}, // realistic (agent's estimate)
|
||||
{150, 10, 8}, // large toolchain
|
||||
{300, 15, 10} // extreme
|
||||
};
|
||||
for (int[] cfg : configs) {
|
||||
int l = cfg[0], p = cfg[1], s = cfg[2];
|
||||
List<String> enabled = makeEnabledList(l);
|
||||
Map<String, List<String>> provides = makeProvidesMap(p, s, 0);
|
||||
|
||||
long sv = slow.ops(enabled, provides);
|
||||
long fv = fast.ops(enabled, provides);
|
||||
double ratio = (double) sv / Math.max(fv, 1);
|
||||
|
||||
total++;
|
||||
boolean ok = sv > fv && ratio >= 5.0;
|
||||
System.out.printf("L=%3d P=%2d S=%2d slow=%7d fast=%5d ratio=%6.1fx %s%n",
|
||||
l, p, s, sv, fv, ratio, ok ? "PASS" : "FAIL");
|
||||
if (ok) passed++;
|
||||
}
|
||||
|
||||
// Correctness: both count same conflicts
|
||||
List<String> enabled = makeEnabledList(80);
|
||||
Map<String, List<String>> provides = makeProvidesMap(7, 6, 0);
|
||||
int sc = slow.run(enabled, provides);
|
||||
int fc = fast.run(enabled, provides);
|
||||
total++;
|
||||
boolean correct = sc == fc;
|
||||
System.out.printf("conflict count matches (%d): %s%n", sc, correct ? "PASS" : "FAIL");
|
||||
if (correct) passed++;
|
||||
|
||||
System.out.printf("%n%d/%d PASS%n", passed, total);
|
||||
if (passed < total) System.exit(1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000353
|
||||
# beam — CLEAN
|
||||
|
||||
Scanned:
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000354
|
||||
# binutils-0001 — ldlang.c unique_section_p O(S×U) linked-list scan
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000355
|
||||
# bird-0003: int_set_union / ec_set_union / lc_set_union O(N×M) → O(N+M)
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000356
|
||||
# bird-0004: clist_filter / eclist_filter / lclist_filter O(L×S) → O(L+S)
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000357
|
||||
# bitcoin-0001: MiniMiner DeleteAncestorPackage O(A×E) std::find in Outer Loop
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000358
|
||||
## Buck2 — CWE-407 Scan Result: CLEAN
|
||||
|
||||
Scanned: `app/buck2_build_api/src/`, `app/buck2_query/src/`, `app/buck2_query_impls/src/`,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000359
|
||||
# bun-0001 — CWE-407 in dirInfoUncached bin_folders dedup
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000020
|
||||
# Caddy matchers.go + upstreams.go — CWE-407 scan result: CLEAN
|
||||
|
||||
## Scan date: 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000360
|
||||
# camel-0001 — O(R²) Route Startup Endpoint Clash Scan
|
||||
|
||||
**Severity:** HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000025
|
||||
# celery-0001 — O(N²) ResultSet Membership Test in update()/add()
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000361
|
||||
# cel-0001: canvas.py append_to_list_option O(N²) list membership in chain/chord build loops
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000026
|
||||
# ceph-0001 — `OSDMap::calc_pg_upmaps`: O(N×U) `std::find` on `underfull` vector inside OSD scan loop
|
||||
|
||||
## Status
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000362
|
||||
# chef-0001 — O(N²) run list dedup via Array#include?
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000363
|
||||
# cilium-0001: CWE-407 — Quadratic L7 rule deduplication during network policy merge
|
||||
|
||||
## Severity: MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000364
|
||||
# cilium-0003: CWE-407 — Quadratic IP address deduplication in node manager
|
||||
|
||||
## Severity: HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000365
|
||||
# cilium-0004: CWE-407 — Quadratic predecessor deduplication in eBPF CFG construction
|
||||
|
||||
## Severity: MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000031
|
||||
# clickhouse-0001: StorageSystemColumns linear scan per column for key membership
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000366
|
||||
# Clojure Compiler — CWE-407 Scan Result: CLEAN
|
||||
|
||||
## Files Scanned
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000367
|
||||
# consul-0001: ExcludeBasedOnChecks — O(checks × ignoreIDs)
|
||||
|
||||
## CWE
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000368
|
||||
# containerd-0001: filterCaps + WithAddedCapabilities O(n²) — capsContain inside loop
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000369
|
||||
# crystal-0001: compare_strictness — O(N²) named arg lookup in overload ordering
|
||||
|
||||
## Severity: HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000370
|
||||
# crystal-0002: type_merge add_type — O(N) includes? inside O(N) compact_types loop
|
||||
|
||||
## Severity: HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000371
|
||||
# crystal-0003: compute_non_nilable_outside_single — O(N) includes? in O(A) ancestor loop
|
||||
|
||||
## Severity: MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000372
|
||||
# crystal-0004: add_to_including_types — O(N²) Array#includes? in module instantiation loop
|
||||
|
||||
## Severity: MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000040
|
||||
# curl CLEAN — altsvc, connect, cookie (CWE-407 scan)
|
||||
|
||||
## Files Analyzed
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000373
|
||||
# dart-0001: forEachOrderedParameterByFunctionNode namedParameters List.contains() — O(N²)
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000374
|
||||
# dart-0002: SSA builder namedParameters.contains() in .where() filter — O(N²)
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000375
|
||||
# dart-0003: SSA builder namedParameters.contains() in argument ordering — O(N²)
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000376
|
||||
# deno — CLEAN
|
||||
|
||||
**Scanned:** 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000377
|
||||
# dgraph-0001: CWE-407 O(P) route cycle-check inside hot BFS/Dijkstra neighbour loop
|
||||
|
||||
**Severity:** HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000378
|
||||
# django-0005: alt_constraints_name list → set in create_altered_constraints()
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000379
|
||||
# django-0006: remove_from_added / remove_from_removed lists → sets in create_altered_indexes()
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000381
|
||||
# doris-0001: BindExpression.processNonStandardAggregate — List.contains per projection → O(P×G)
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000382
|
||||
# dragonfly-0001: GetMissingMigrations O(M²) std::find → O(M log M) set_difference
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000383
|
||||
# druid-0001: ScanQuery columns List.contains in orderBy validation loop
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000384
|
||||
# eclipse-jdt-0001: minimalErasedCandidates BFS work-queue ArrayList.contains O(N²)
|
||||
|
||||
**CWE-407** — Inefficient Algorithmic Complexity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000385
|
||||
# elasticsearch-001: MMRResultDiversification O(n²) selectedDocRanks.contains
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000385
|
||||
# elasticsearch-002: IngestDocument appendValues O(n²) list.contains
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000385
|
||||
# elasticsearch-003: XContentHelper O(n²) mergedList.contains in list dedup merge
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000385
|
||||
# elasticsearch-004: IndexGraveyard.containsIndex O(n²) List scan in DanglingIndicesState loop
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000387
|
||||
# elixir-0001: Mix.Dep.Converger.topological_sort — O(N²) Enum.find in Enum.map
|
||||
|
||||
## Severity: HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000388
|
||||
# emacs-0001: Ffontset_info Fmember dedup O(R×F×N) — MEDIUM
|
||||
|
||||
## Summary
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000389
|
||||
# emacs-0002: bytecomp--code-strings member O(F²) per file — MEDIUM
|
||||
|
||||
## Summary
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000390
|
||||
# envoy-0001: CWE-407 — Linear namespace membership scan on every ext_proc response, per-request
|
||||
|
||||
## Severity: HIGH
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000391
|
||||
# envoy-0003: CWE-407 — O(H×R) linear scan during EDS host batch merge
|
||||
|
||||
## Severity: MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000392
|
||||
# etcd CWE-407 Scan — CLEAN
|
||||
|
||||
**Date:** 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000392
|
||||
# etcd CWE-407 Deeper Scan — CLEAN
|
||||
|
||||
**Date:** 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000070
|
||||
# FFmpeg deeper scan — CWE-407 CLEAN (libavcodec/libavfilter/libavformat)
|
||||
|
||||
## Files scanned
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000394
|
||||
# fish — CLEAN
|
||||
|
||||
## Scan Date
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000395
|
||||
# flink-0002: RowTypeUtils.getUniqueName — List.contains() inside nested for+do-while
|
||||
|
||||
## Defect ID
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000396
|
||||
# flink-0003: AggregateReduceGroupingRule — List<Integer>.contains() inside for loop
|
||||
|
||||
## Defect ID
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000397
|
||||
# flink-0004: DynamicSinkUtils UPDATE column resolution O(C×U) → O(C+U)
|
||||
|
||||
## Location
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000398
|
||||
# flink-0005: DynamicPartitionPruningUtils — List.indexOf + List.contains O(A×F + K×A) → O(F + K)
|
||||
|
||||
## Metadata
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000072
|
||||
# flink-deeper — PipelinedRegionSchedulingStrategy + EdgeManagerBuildUtil CLEAN
|
||||
|
||||
## Files Scanned
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000399
|
||||
# Flutter CWE-407 Scan — CLEAN
|
||||
|
||||
## Date
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000400
|
||||
# foundationdb-0001 — canLaunchSrc: std::count nested inside O(S×R) double loop
|
||||
|
||||
**Project:** FoundationDB
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000401
|
||||
# frrouting-0003: community_uniq_sort O(N²) → O(N log N) sort+dedup
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000402
|
||||
# frrouting-0004: ecommunity_include O(E1×E2) → O(E1+E2) merge-intersection
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000403
|
||||
# GDB — CWE-407 Scan Result: CLEAN
|
||||
|
||||
**Date:** 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000404
|
||||
# GLib — CWE-407 scan CLEAN
|
||||
|
||||
## Files scanned
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000081
|
||||
# go-stdlib-0001 — net/http/internal/http2: rfc9218Priority allocates []string per header field
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000081
|
||||
# go-stdlib deeper scan — CLEAN
|
||||
|
||||
**Scan date:** 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000405
|
||||
# GraalVM CWE-407 Scan — CLEAN
|
||||
|
||||
**Repo:** `https://github.com/oracle/graal` (depth=1, tag: main)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000406
|
||||
# grafana-0002: Folder/dashboard permission UID deduplication O(P²)
|
||||
|
||||
**CWE:** CWE-407 (Algorithmic Complexity — Inefficient Algorithmic Complexity)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000407
|
||||
# graphhopper-0001: AlternativeRouteCH — IntArrayList.contains() O(P) inside edge loop
|
||||
|
||||
## File
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000408
|
||||
# graphhopper-0002: AlternativeRouteEdgeCH — IntArrayList.contains() O(P) inside edge loop
|
||||
|
||||
## File
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000409
|
||||
# groovy-0001 — StaticTypeCheckingVisitor: `collectedNames` ArrayList linear scan O(E×C)
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000410
|
||||
# groovy-0002 — Verifier: `Arrays.asList(params).contains(p)` fresh allocation per variable expression O(V×P)
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000411
|
||||
# grpc-0001: channelz PropertyGrid/PropertyTable GetIndex() std::find O(C²) → O(1) with absl::flat_hash_map
|
||||
|
||||
## File
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000412
|
||||
# gunicorn — CWE-407 Scan: CLEAN
|
||||
|
||||
**Date:** 2026-03-27
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000096
|
||||
# hadoop-0001: PendingReconstructionBlocks — ArrayList.contains() O(n²) in incrementReplicas()
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000097
|
||||
# hadoop-0002: HeartbeatManager — ArrayList.contains() O(n²) in heartbeat check loop
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000098
|
||||
# hadoop-0003: StoragePolicySatisfier — ArrayList.contains() O(n²) in block placement loop
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000099
|
||||
# hadoop-0004: HDFS Balancer Dispatcher — srcBlocks ArrayList.contains() O(n²) in block receive loop
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000413
|
||||
# haproxy-0002 — flt_spoe.c SPOE message/group duplicate detection O(N²)
|
||||
|
||||
## Ecosystem
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000414
|
||||
# haproxy-0003 — flt_spoe.c spoe_check_config O(P×M), O(P×G), O(G×P×M) resolution loops
|
||||
|
||||
## Ecosystem
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000415
|
||||
# hazelcast-0001 — QueueContainer.compareAndRemove() O(Q×D) membership test
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000416
|
||||
# hazelcast-0002 — QueueContainer.contains() O(D×Q) nested scan
|
||||
|
||||
## Classification
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000102
|
||||
# hbase-0001: DefaultStoreFileManager — ArrayList.contains() O(n²) in getUnneededFiles()
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000103
|
||||
# hbase-0002: BaseLoadBalancer.randomAssignment — usedSNs ArrayList.contains() O(n²) in assignment loop
|
||||
|
||||
## Severity
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000105
|
||||
# helm-0002: filterReleases / filterPlugins — O(n×m) linear membership in filter loops
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000106
|
||||
# helm-0003: checkRequestedRepos / isRepoRequested — O(n×m) nested linear scan in repo update
|
||||
|
||||
**Severity:** MEDIUM
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000401
|
||||
# UNDF: UNDF-2026-000000417
|
||||
# hibernate-0006: AbstractEntityPersister — O(T²) alias dedup in subclass property closure
|
||||
|
||||
## CWE-407 — Algorithmic Complexity: Linear Membership Test in Loop
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# UNDF: UNDF-2026-000000107
|
||||
# Hibernate ORM — Deeper CWE-407 Scan CLEAN Report
|
||||
|
||||
## Scan Date
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue