kdenlive: all 5 MOADs scanned. - MOAD-0001: 8 pre-existing CWE-407 patches confirmed, no new sites found. - MOAD-0002: pCore god object (3704 refs) noted as Intertangle observation. - MOAD-0003: CLEAN (thread_local is execution guard, not request identity). - MOAD-0004: CLEAN (no credential logging). - MOAD-0005 NEW: buildLumaThumbs() called via QtConcurrent::run() writes to MainWindow::m_lumacache (QMap, not thread-safe) without mutex while UI widgets read/write the same map from the main thread — data race on project load. Patch: add QMutex, wrap all m_lumacache access sites. audacity: all 5 MOADs scanned. - MOAD-0001: 2 pre-existing CWE-407 patches confirmed, no new sites found. - MOAD-0002 through MOAD-0005: CLEAN. 9/9 KdenliveTest PASS (added kdenlive-0009 MOAD-0005 threading test).
2.4 KiB
GStreamer — All-5-MOAD Scan Report
Date: 2026-03-31 Source: https://gitlab.freedesktop.org/gstreamer/gstreamer (depth=1, monorepo) Subprojects scanned: gstreamer/gst/, gst-plugins-base/gst/, gst-plugins-good/gst/, gst-plugins-bad/ext/webrtc/, gst-plugins-bad/ext/hls/, gst-plugins-bad/ext/curl/
MOAD-0001 (CWE-407) — Findings
| ID | File | Pattern | Severity |
|---|---|---|---|
| gstreamer-0001 | gst/gstelementfactory.c | gst_element_factory_list_filter O(N×M×S²) cap scan | HIGH |
| gstreamer-0002 | plugins/elements/gstinputselector.c | pushed_pads GList O(N²) event dedup | MEDIUM |
| gstreamer-0003 | gst/gsttracerutils.c | get_active_tracers dedup O(H×T²) | MEDIUM |
| gstreamer-0005 | ext/webrtc/gstwebrtcbin.c | seen_transceivers GList O(T²) in SDP offer creation, 34x | MEDIUM |
All patched. Unit tests PASS.
MOAD-0002 (Intertangle) — CLEAN
GStreamer has natural coupling through GstBus (message bus) and GstClock
(global pipeline clock) but these are documented pipeline-level coordination
points, not shared mutable god objects that intertangle independent subsystems.
Each element manages its own state; GstContext propagates context between
elements with proper negotiation semantics. No intertangle defect identified.
MOAD-0003 (Leaked Context) — CLEAN
GStreamer uses GPrivate (GLib thread-local) only for debug logging internals
(__categories, __level_name) which hold debug configuration, not
request-scoped identity. No SSRC, session-ID, client-ID, or pipeline-ID is
tunneled through thread-locals between request boundaries.
MOAD-0004 (CWE-312 Logged Secret) — FINDING
| ID | File | Pattern | Severity |
|---|---|---|---|
| gstreamer-0004 | gst-plugins-good/gst/rtsp/gstrtspsrc.c:2001 | proxy_passwd logged verbatim via GST_LOG_OBJECT | MEDIUM |
gst_rtspsrc_set_proxy() logs "set proxy user/pw from properties: user:password"
at GST_LEVEL_LOG (level 9). Any process with GST_DEBUG="*:9" exposes the
HTTP proxy password in plaintext. Fix: log username only. Patched in gstreamer-0004.
MOAD-0005 (Thundering Herd) — CLEAN
gst_registry_get() uses _gst_registry_mutex (GMutex) with double-checked
locking. Element factory list (element_factory_list) is protected by
GST_OBJECT_LOCK. All g_hash_table_lookup / g_hash_table_insert pairs in
the registry are inside locked critical sections. No unprotected
get+null+compute+put pattern found.