Commit graph

607 commits

Author SHA1 Message Date
ae2eaf3be9 undf: assign UNDF-2026-000000807 through 000000812; stamp vscode+zed patches 2026-03-30 11:43:50 -04:00
05e4902a9e vscode+zed: CWE-407 scan — 6 defects across 2 code editors
VS Code (4 defects):
- vscode-0001: extensionGalleryService uuid dedup O(N×M) MEDIUM 100x
- vscode-0002: abstractExtensionManagementService deps O(D²) MEDIUM 49x
- vscode-0003: userDataSync merge compare() O(N×M) across 8 files MEDIUM 250x
- vscode-0004: configurationModels override identifiers O(N×M) LOW-MEDIUM 18x

Zed (2 defects):
- zed-0001: lsp_store LSP edit dedup Vec::contains O(E²) MEDIUM 49x
- zed-0002: extension_builder manifest dedup Vec::contains O(N²) LOW 24x

6/6 unit tests PASS
2026-03-30 11:43:31 -04:00
d05d4bd6f0 CLAUDE.md: update UNDF count to 806 2026-03-30 11:34:10 -04:00
f8eb370fe4 undf: assign 806; stamp vlc+obs-studio patches 2026-03-30 11:33:21 -04:00
15a65b2227 vlc+obs-studio: CWE-407 scan — 2 defects (vlc-0001 randomizer_Remove O(N×C), obs-studio-0001 push_audio_tree da_find O(N²)/frame) 2026-03-30 11:33:01 -04:00
860b0ee52e CLAUDE.md: update UNDF count to 805 2026-03-30 11:29:53 -04:00
20f60ee078 undf: assign 798-805; stamp kdenlive+shotcut patches 2026-03-30 11:28:35 -04:00
13db08af50 darktable+scribus: CWE-407 scan — 6 defects (3 darktable, 3 scribus)
darktable-0001: map_locations image diff g_list_find O(N*M) MEDIUM 375x
darktable-0002: tags _tag_add_tags_to_list g_list_find O(T*L) MEDIUM 375x
darktable-0003: map view clustering g_list_find(sel_imgs) O(I²×S) HIGH 160x
scribus-0001: getSortedStyleList retList.contains O(N²) MEDIUM 167x (×4 copies)
scribus-0002: getUsedPatterns results.contains O(I×R) MEDIUM 98x
scribus-0003: Selection::addItems m_SelList.contains O(N×M) MEDIUM 2100x
2026-03-30 11:28:25 -04:00
f4593ef84a kdenlive+shotcut: CWE-407 scan — 5 defects (4 kdenlive, 1 shotcut)
kdenlive-0001: ThumbnailCache m_storedOnDisk vector<int> std::find dedup O(C*P*V) MEDIUM
kdenlive-0002: TimelineModel clipIds vector std::find in mix loop O(N^2) MEDIUM
kdenlive-0003: TimelineController sorted_clips vector std::find in moveGroup O(N^2) MEDIUM
kdenlive-0004: TimelineModel all_items list std::find in resize O(N^2) MEDIUM
shotcut-0001: PlaylistProxyModel m_hashes vector std::find in filterAcceptsRow O(N^2) MEDIUM

5/5 unit tests PASS
2026-03-30 11:28:05 -04:00
8a27ea4105 CLAUDE.md: update UNDF count to 794, add image/video/office priority targets 2026-03-30 11:22:42 -04:00
20089cbd72 undf: assign 793-794; stamp gimp patches 2026-03-30 11:22:14 -04:00
9b60b61e9c imagemagick/gimp: CWE-407 findings
imagemagick-0001: UHDR coder GetImageListLength() O(N) in for-loop = O(N²) MEDIUM
imagemagick-0002: SyncImageList nested scene-dedup O(N²) MEDIUM
gimp-0001: layer_stack_cmp g_list_find in loop O(S²×L²) MEDIUM
gimp-0002: remove_from_layer_stack nested g_list_remove O(C×S×L) LOW-MEDIUM

4 defects total, 4/4 unit tests PASS
2026-03-30 11:21:24 -04:00
b5c2a3d989 undf: stamp patches, update registry to 792 2026-03-30 11:15:59 -04:00
bf6a727f08 audacity: add Java unit test for CWE-407 defects (audacity-0001/0002) 2026-03-30 11:15:03 -04:00
9b71d0d527 undf: assign 778-785; stamp inkscape/blender patches 2026-03-30 11:13:27 -04:00
bdfda13c7e inkscape/blender: CWE-407 scan — 6 defects across 2 creative tool targets
Inkscape (3 defects):
- inkscape-0001: SPObject::getLinkedRecursive vector dedup O(N^2) HIGH
- inkscape-0002: ObjectSet::raise()/lower() vector membership O(S*N) MEDIUM
- inkscape-0003: get_all_items_recursive exclude scan O(C*E) MEDIUM

Blender (3 defects):
- blender-0001: node_runtime socket chain cycle detection Vector.contains O(D^2) HIGH
- blender-0002: USD skel import used_indices dedup std::find O(J^2) MEDIUM
- blender-0003: shader_tool visited_files std::find O(D*V) MEDIUM

6/6 unit tests PASS.
2026-03-30 11:13:03 -04:00
0b5409ff95 libtorrent-0001/qbittorrent: CWE-407 scan — 1 defect, 1 CLEAN
libtorrent-0001: file_storage::get_or_add_path std::find on m_paths vector O(F*P) MEDIUM 250x
qBittorrent: CLEAN (QSet/QHash throughout for membership tests)
2026-03-30 10:39:32 -04:00
a0dde8b41a undf: assign 775-776; stamp deluge patches 2026-03-30 10:37:20 -04:00
176d9f88de deluge: CWE-407 FilterManager+TorrentManager list.remove()/index() O(T^2)
deluge-0001: FilterManager filter_torrent_ids() and filter_state_active()
use list.remove(id) inside a loop — O(T^2). Fix: set-based removal / list
comprehension. 94x overhead at T=2000.

deluge-0002: TorrentManager get_torrent_list() uses list.index()+pop()
inside a loop — O(T^2). Fix: list comprehension. 98x overhead at T=2000.

Transmission: re-confirmed CLEAN (binary search blocklist, map peer pool,
bitfield piece tracking).

2 defects, 4/4 PASS.
2026-03-30 10:36:58 -04:00
c967910a44 undf: assign UNDF-2026-000000774; stamp llvm-0006 patch 2026-03-30 10:34:45 -04:00
d0cb5fa834 llvm-0006: PartialInlining IsSingleExit BlockList is_contained O(N^2)
CWE-407: is_contained(BlockList, Succ) inside nested for loops in
computeOutliningColdRegionsInfo. Fix: SmallPtrSet for O(1) membership.
GCC deep scan: CLEAN (bitmaps/hash_sets throughout).
2026-03-30 10:34:02 -04:00
36595d65fb undf: stamp rustc/swift patches, update registry to 773 2026-03-30 10:27:44 -04:00
b37db35655 rustc/swift: CWE-407 scan — rustc CLEAN, swift 1 defect
rustc: Exemplary use of FxHashSet/BitSet/IntervalSet throughout;
no linear membership tests on hot paths.

swift-0001: LoadableByAddress.cpp StructLoweringState uses SmallVector
with std::find for largeLoadableArgs/applies membership — O(I×A)
per function, 322x overhead at A=500. Fix: SmallPtrSet shadow.
2026-03-30 10:26:11 -04:00
79a77db4f8 undf: assign 768-770; stamp minio patches 2026-03-30 10:25:20 -04:00
cb853893e5 minio: 3 CWE-407 defects; etcd: CLEAN (deeper scan)
minio-0001: healingTracker.isHealed() slices.Contains O(B×H) MEDIUM 25x
minio-0002: isBucketDecommissioned() slices.Contains O(P×D) MEDIUM 24x
minio-0003: isGroupDescEqual/isUserInfoEqual slices.Contains O(M²) MEDIUM 13x
etcd: maps + interval trees throughout; no CWE-407 defects found
2026-03-30 10:24:48 -04:00
ae8621d527 undf: stamp cpython-0001/0002 + ruby-0001 patches 2026-03-30 10:15:08 -04:00
44d513d045 cpython/ruby: CWE-407 scan — 2 CPython defects, 1 Ruby defect 2026-03-30 10:13:34 -04:00
76ffba4a60 tidb/scylladb: CWE-407 scan — renumber tidb patches, stamp UNDF
tidb-0001: partition drop name lookup O(P×D) → O(P+D) (27x at P=8192)
tidb-0002: predicate simplification (merged into tidb-0002 in prior commit)
tidb-0003: list partition group intersect O(G²) → O(G) (renumbered from 0002)
scylladb-0001: UNDF stamp added
2026-03-30 10:13:33 -04:00
e45af3961b undf: stamp duckdb/arrow patches; update registry to 767 2026-03-30 10:12:10 -04:00
6b975a3b9e duckdb/arrow: CWE-407 scan — 4 DuckDB defects, 2 Arrow defects
DuckDB (C++ query engine):
- duckdb-0001: Binder::AddCorrelatedColumn vector dedup O(C²) MEDIUM 200x
- duckdb-0002: HasCorrelatedExpressions vector scan O(N×M) MEDIUM 100x
- duckdb-0003: ComputeOverlappingBindings vector scan O(N×H) MEDIUM 219x
- duckdb-0004: Deliminator group-join binding check O(G×J) MEDIUM 125x

Apache Arrow (C++ analytics):
- arrow-0001: AsofJoin IsTimeOrKeyColumn vector scan O(F×K) MEDIUM 114x
- arrow-0002: Scanner AddFieldsNeededForFilter vector dedup O(F×C) MEDIUM 250x

All 6/6 unit tests PASS.
2026-03-30 10:10:27 -04:00
0772cf539a undf: assign UNDF-2026-000000761..762, 000000301; stamp flink-0006/0007/storm-0001 patches 2026-03-30 09:53:25 -04:00
05e6aace95 istio/argo-cd: CWE-407 findings
istio-0001: gateway reportGatewayStatus addressesToReport dedup O(I^2)
  pilot/pkg/config/kube/gateway/conversion.go +
  pilot/pkg/config/kube/agentgateway/gateway_status.go
  Fix: map[string]struct{} seen-set replaces slices.Contains on growing list

argo-cd-0001: mergeIgnoreDifferences O(P^2) per field type
  util/argo/diff/ignore.go
  Fix: pre-compute sets for JQPathExpressions/JSONPointers/ManagedFieldsManagers

Both: 2/2 unit tests PASS; 3.4x and 3.7x speedup measured
2026-03-30 09:53:12 -04:00
b31ac644bb flink-deeper/storm: CWE-407 findings
flink-0006: MultipleInputNodeCreationProcessor.createMultipleInputNode() group.members ArrayList.contains inside nested loop O(M2*I); fix: HashSet membersSet before loop
flink-0007: MLPredictTypeStrategy.validateTableAndDescriptorArguments() tableFieldNames List<String>.contains in for loop O(D*T); fix: HashSet<String> conversion before loop
storm-0001: WorkerState.refreshConnections() localTaskIds ArrayList<Integer>.contains in per-task loop O(T_out*L); fix: change to HashSet<Integer>
2026-03-30 09:52:27 -04:00
cb15f957b5 undf: assign UNDF-2026-000000758..759, stamp godot-0011/0012 patches 2026-03-30 09:51:06 -04:00
4d73070504 unreal/godot-deeper: CWE-407 findings
unreal: clone unavailable (EpicGames/UnrealEngine requires GitHub auth) — CLEAN.md added.

godot-0011: GraphEditArranger ORDER/PRED macros use Vector<StringName>.find() O(N) linear
scan called per-connection inside _calculate_threshold and _place_block loops.
Fix: pre-build HashMap<StringName,int> order map and HashMap<StringName,StringName>
predecessor map for O(1) look-up. Severity: MEDIUM (~6x at N=200 nodes).

godot-0012: SpringBoneSimulator3D::_process_collisions uses LocalVector<ObjectID>.has()
and .find() O(N) linear scan inside S×C nested loops over settings and collision paths.
Fix: pre-build HashSet<ObjectID> + HashMap<ObjectID,int> for O(1) look-up.
Severity: MEDIUM-HIGH (~20x at N=500, S=50, C=100).

Both: 2/2 unit tests PASS.
2026-03-30 09:50:15 -04:00
f3d11ed8a4 opencv/prometheus: CWE-407 findings — stamp UNDF headers 2026-03-30 09:40:08 -04:00
7aee87ab40 CLAUDE.md: update UNDF count to 757 2026-03-30 09:39:06 -04:00
fbc56da95b curl/ffmpeg: CWE-407 findings — awssigv4 bubble sort + filtergraph format merge
curl-0001 (UNDF-2026-000000040): lib/http_aws_sigv4.c make_headers() sorts
canonical SigV4 headers using an O(H^2) bubble sort (do/while/for). Every
SigV4 HTTP request pays H^2 comparisons. At H=200: 35,024 vs 794 (44x).
Fix: qsort on a temporary pointer array, O(H log H).

ffmpeg-0001 (UNDF-2026-000000070): libavfilter/formats.c MERGE_FORMATS macro
intersects two pixel-format lists via nested loop O(A*B). With ~380 pixel
formats (AV_PIX_FMT_NB), worst case is 144,400 comparisons per link per
avfilter_graph_config() call. At A=B=380: 72,390 vs 3,420 (21x).
Fix: sort b, bsearch for membership, O((A+B) log B).

Unit tests: CurlTest.java, FFmpegTest.java — both PASS.
2026-03-30 09:38:07 -04:00
d78b31eb6e undf: assign UNDF numbers, stamp patches (cockroach-0001..0003, influxdb-0001..0002) 2026-03-30 09:36:45 -04:00
37836b498d cockroach/influxdb: CWE-407 findings 2026-03-30 09:36:24 -04:00
95648fb2b0 undf: stamp panda3d-0001 → UNDF-2026-000000207, ogre-0001 → UNDF-2026-000000193 2026-03-30 09:28:43 -04:00
75edb2a0a9 panda3d/ogre: CWE-407 findings
panda3d-0001: NodePathCollection remove_duplicate_paths O(N^2) nested scan
  and remove_paths_from has_path O(N*M) -> fix with pset, 499x at N=1000

ogre-0001: GLSLProgramWriter std::find(inParams) O(A*O*P) in nested loop
  during GLSL shader code generation -> fix with unordered_set, 75x at A=200
2026-03-30 09:27:50 -04:00
780d7fde87 undf: assign UNDF-2026-000000751..752, stamp patches (bullet3-0001, three-0001) 2026-03-30 09:26:18 -04:00
0d33225dcc sdl/box2d: CWE-407 findings
sdl-0001: SDL_gamepad.c SDL_PrivateAddMappingForGUID — O(M) tail walk of
s_pSupportedGamepads linked list on every mapping insert → O(M²) bulk load.
SDL_GameControllerDB ships >30 000 entries; fix: tail pointer s_pLastSupportedGamepad.

box2d-0001: broad_phase.c b2UnBufferMove — linear scan through moveArray to
find proxy key on destroy (acknowledged by code comment) → O(N²) on bulk destroy.
Fix: index map (proxyKey → slot) for O(1) swap-remove.
2026-03-30 09:25:48 -04:00
db92c9428a bullet3/three.js: CWE-407 findings
bullet3-0001: btGhostObject::addOverlappingObjectInternal uses
findLinearSearch (O(N) pointer scan) on every broadphase pair-update
callback. With N objects overlapping a ghost, each tick is O(N²). Fix:
btHashMap<btHashPtr,int> shadow index → O(1) add/remove. 250x at N=500.

three-0001: NodeBuilder.addNode/addSequentialNode use Array.includes
(O(N)) per node during shader build traversal → O(N²). StackNode.generate
uses nodes.indexOf inside filter → O(N²). Fix: shadow with Set → O(1). 250x
at N=500.
2026-03-30 09:25:29 -04:00
99e1a862bd undf: assign UNDF-2026-000000749/750 to consul-0002/nats-server-0002; stamp patches 2026-03-30 09:19:09 -04:00
750b27a453 CLAUDE.md: update UNDF count to 749 2026-03-30 09:16:28 -04:00
7ab4695e82 undf: assign UNDF-2026-000000748 to nomad-0005; stamp patch
nomad-0005: scheduler/reconciler/reconcile_cluster.go
  handleReconnectingAllocs slices.Contains(replacements, alloc.ID)
  O(A×R) inner linear scan — replaced with map[string]struct{} O(1)

Also confirm envoy-0001 through envoy-0004 were previously scanned
(UNDF-63, 390, 391, 699) and nomad-0001 through nomad-0004 (UNDF-476..479).
2026-03-30 09:15:20 -04:00
b577fa269f undf: assign UNDF-2026-000000449/746/747 to libgdx-0002/0005/0006; stamp patches 2026-03-30 09:14:21 -04:00
783e406633 pygame/libgdx: CWE-407 findings
pygame: CLEAN — runtime uses dict/set throughout (O(1) membership)
libgdx-0002: ModelBuilder.rebuildReferences Array.contains O(P*M) — patch
libgdx-0005: Stage.touchDragged touchFocuses.contains O(F^2) — patch
libgdx-0006: AfterAction.delegate currentActions.indexOf O(W*A) per frame — patch
unit: extend LibGDXTest to 7 tests, all PASS (50x-1971x speedup measured)
2026-03-30 09:13:34 -04:00