java-topology/defects/nomad/patch/nomad-0004-checkstore-difference.md

724 B
Raw Permalink Blame History

UNDF: UNDF-2026-000000479

nomad-0004: checkstore.shim.Difference — O(current × ids)

CWE

CWE-407: Inefficient Algorithmic Complexity

Severity

MEDIUM

Location

client/serviceregistration/checks/checkstore/shim.go:152-155

Description

Difference iterates over all stored check IDs for an allocation and for each calls slices.Contains(ids, id) — a linear scan over the input slice.

for id := range s.current[allocID] {
    if !slices.Contains(ids, id) {          // O(|ids|)
        remove = append(remove, id)
    }
}

With C stored checks and I input IDs: O(C × I).

Fix

Build a map[structs.CheckID]struct{} from ids before the loop.

Speedup

~Ix speedup where I = len(ids).