FreeRDP is a free remote desktop protocol library and clients
This report summarizes scanner evidence for FreeRDP/FreeRDP, a C project with 13,918 GitHub stars. SynthScan examined 776,054 lines of code across 2478 source files, recording 1611 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.9 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 1602 finding(s).
Are imports declared and package/API names verified? 5 finding(s).
Are wrappers, guards, and repeated structures necessary? 4 finding(s).
Which changes need focused human review? 1611 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1611 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CMakeLists.txt | 1 | # FreeRDP: A Remote Desktop Protocol Implementation | COMMENT |
| LOW | tools/smartcard-interpreter.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | include/CMakeLists.txt | 1 | # FreeRDP: A Remote Desktop Protocol Implementation | COMMENT |
| LOW | include/freerdp/settings_types.h | 21 | * limitations under the License. | COMMENT |
| LOW | include/freerdp/settings_types.h | 41 | #endif | COMMENT |
| LOW | include/freerdp/settings_types.h | 61 | COMMENT | |
| LOW | include/freerdp/settings_types.h | 81 | #define CONNECTION_TYPE_SATELLITE 0x03 | COMMENT |
| LOW | include/freerdp/settings_types.h | 141 | #define RNS_UD_15BPP_SUPPORT 0x0004 | COMMENT |
| LOW | include/freerdp/settings_types.h | 161 | #define RNS_UD_CS_SUPPORT_SKIP_CHANNELJOIN 0x0800 | COMMENT |
| LOW | include/freerdp/settings_types.h | 181 | COMMENT | |
| LOW | include/freerdp/settings_types.h | 201 | #define TRANSPORT_TYPE_UDP_PREFERRED 0x00000100 | COMMENT |
| LOW | include/freerdp/settings_types.h | 321 | }; | COMMENT |
| LOW | include/freerdp/error.h | 21 | #define FREERDP_ERROR_H | COMMENT |
| LOW | include/freerdp/error.h | 41 | #define CAT_ADMIN "administrative" | COMMENT |
| LOW | include/freerdp/error.h | 61 | #define ERRINFO_CLOSE_STACK_ON_DRIVER_FAILURE 0x00000011 | COMMENT |
| LOW | include/freerdp/error.h | 81 | #define ERRINFO_CB_LOADING_DESTINATION 0x0000402 | COMMENT |
| LOW | include/freerdp/error.h | 101 | #define ERRINFO_CREATE_USER_DATA_FAILED 0x000010D2 | COMMENT |
| LOW | include/freerdp/error.h | 121 | #define ERRINFO_INVALID_VC_COMPRESSION_TYPE 0x000010ED | COMMENT |
| LOW | include/freerdp/error.h | 141 | #define ERRINFO_SECURITY_DATA_TOO_SHORT13 0x0000111C | COMMENT |
| LOW | include/freerdp/error.h | 161 | #define ERRINFO_DYNAMIC_DST_DISABLED_FIELD_MISSING 0x00001132 | COMMENT |
| LOW | include/freerdp/error.h | 221 | #define FREERDP_ERROR_ERRINFO_CLASS (FREERDP_ERROR_BASE + 1) | COMMENT |
| LOW | include/freerdp/error.h | 241 | #define FREERDP_ERROR_CLOSE_STACK_ON_DRIVER_NOT_READY \ | COMMENT |
| LOW | include/freerdp/error.h | 261 | #define ERRCONNECT_AUTHENTICATION_FAILED 0x00000009 | COMMENT |
| LOW | include/freerdp/peer.h | 21 | #define FREERDP_PEER_H | COMMENT |
| LOW | include/freerdp/input.h | 21 | #define FREERDP_INPUT_H | COMMENT |
| LOW | include/freerdp/secondary.h | 21 | #define FREERDP_UPDATE_SECONDARY_H | COMMENT |
| LOW | include/freerdp/secondary.h | 41 | #define BITMAP_CACHE_WAITING_LIST_INDEX 0x7FFF | COMMENT |
| LOW | include/freerdp/secondary.h | 61 | #define HS_FDIAGONAL 0x02 | COMMENT |
| LOW | include/freerdp/client.h | 21 | #ifndef FREERDP_CLIENT_H | COMMENT |
| LOW | include/freerdp/altsec.h | 21 | #define FREERDP_UPDATE_ALTSEC_H | COMMENT |
| LOW | include/freerdp/settings.h | 21 | * limitations under the License. | COMMENT |
| LOW | include/freerdp/addin.h | 21 | #define FREERDP_COMMON_ADDIN_H | COMMENT |
| LOW | include/freerdp/types.h | 21 | #ifndef FREERDP_TYPES_H | COMMENT |
| LOW | include/freerdp/freerdp.h | 21 | COMMENT | |
| LOW | include/freerdp/freerdp.h | 61 | COMMENT | |
| LOW | include/freerdp/window.h | 21 | #define FREERDP_UPDATE_WINDOW_H | COMMENT |
| LOW | include/freerdp/window.h | 41 | #define WINDOW_ORDER_FIELD_RESIZE_MARGIN_X 0x00000080 | COMMENT |
| LOW | include/freerdp/window.h | 61 | #define WINDOW_ORDER_FIELD_ICON_BIG 0x00002000 | COMMENT |
| LOW | include/freerdp/window.h | 81 | /* Window Styles */ | COMMENT |
| LOW | include/freerdp/window.h | 101 | (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX) | COMMENT |
| LOW | include/freerdp/window.h | 121 | #define WS_EX_CONTEXTHELP 0x00000400 | COMMENT |
| LOW | include/freerdp/message.h | 41 | COMMENT | |
| LOW | include/freerdp/message.h | 61 | #define FREERDP_UPDATE_SET_BOUNDS MakeMessageId(Update, SetBounds) | COMMENT |
| LOW | include/freerdp/message.h | 81 | #define PrimaryUpdate_ScrBlt 3 | COMMENT |
| LOW | include/freerdp/message.h | 101 | COMMENT | |
| LOW | include/freerdp/message.h | 121 | #define FREERDP_PRIMARY_UPDATE_POLYGON_CB MakeMessageId(PrimaryUpdate, PolygonCB) | COMMENT |
| LOW | include/freerdp/message.h | 141 | #define FREERDP_SECONDARY_UPDATE_CACHE_GLYPH MakeMessageId(SecondaryUpdate, CacheGlyph) | COMMENT |
| LOW | include/freerdp/message.h | 161 | COMMENT | |
| LOW | include/freerdp/message.h | 181 | COMMENT | |
| LOW | include/freerdp/message.h | 201 | #define FREERDP_WINDOW_UPDATE_NOTIFY_ICON_UPDATE MakeMessageId(WindowUpdate, NotifyIconUpdate) | COMMENT |
| LOW | include/freerdp/message.h | 241 | #define Input_FocusInEvent 6 | COMMENT |
| LOW | include/freerdp/message.h | 261 | * Debug Channel | COMMENT |
| LOW | include/freerdp/message.h | 281 | #define CliprdrChannel_TemporaryDirectory 10 | COMMENT |
| LOW | include/freerdp/message.h | 301 | /** | COMMENT |
| LOW | include/freerdp/message.h | 321 | #define RailChannel_ClientLanguageBarInfo 15 | COMMENT |
| LOW | include/freerdp/message.h | 361 | #define RdpeiChannel_ServerReady 1 | COMMENT |
| LOW | include/freerdp/svc.h | 21 | COMMENT | |
| LOW | include/freerdp/api.h | 21 | #define FREERDP_API_H | COMMENT |
| LOW | include/freerdp/api.h | 41 | #ifdef FREERDP_EXPORTS | COMMENT |
| LOW | include/freerdp/api.h | 61 | #define FREERDP_API __attribute__((visibility("default"))) | COMMENT |
| 1527 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | client/common/xdg-aad-helper/xdg-aad-helper.py | 236 | except FileNotFoundError: | CODE |
| HIGH | client/common/xdg-aad-helper/xdg-aad-helper.py | 284 | except FileNotFoundError: | CODE |
| HIGH | client/common/xdg-aad-helper/xdg-aad-helper.py | 277 | except socket.timeout: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/smartcard-interpreter.py | 235 | CODE | |
| LOW | tools/smartcard-interpreter.py | 276 | CODE | |
| LOW | tools/smartcard-interpreter.py | 316 | CODE | |
| LOW | tools/smartcard-interpreter.py | 416 | CODE | |
| LOW | tools/smartcard-interpreter.py | 446 | CODE | |
| LOW | scripts/fetch_language_identifiers.py | 23 | CODE | |
| LOW | scripts/fetch_language_identifiers.py | 58 | CODE | |
| LOW | client/common/xdg-aad-helper/xdg-aad-helper.py | 321 | CODE | |
| LOW | client/common/xdg-aad-helper/xdg-aad-helper.py | 202 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | winpr/libwinpr/crypto/test/TestCryptoCipher.c | 17 | const char plaintext[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " | CODE |
| LOW | winpr/libwinpr/crypto/test/TestCryptoCipher.c | 17 | const char plaintext[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " | CODE |
| LOW | winpr/libwinpr/sspi/Kerberos/kerberos.c | 474 | /* e.g. "user@example.com" becomes "user\@example.com@CORP.EXAMPLE.NET" */ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packaging/scripts/create_rpm.sh | 3 | # Create a RPM package | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | winpr/libwinpr/clipboard/synthetic.c | 220 | // Step 1: convert to utf-8 | COMMENT |
| LOW | client/X11/xf_event.c | 1015 | * This section handles sending the appropriate commands to the rail server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/codeql-analysis.yml | 50 | # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/fetch_language_identifiers.py | 6 | CODE | |
| LOW | scripts/fetch_language_identifiers.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | winpr/libwinpr/clipboard/synthetic.c | 220 | // Step 1: convert to utf-8 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update-windows-zones.py | 39 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libfreerdp/gdi/test/helpers.c | 137 | return TRUE; // TODO: Fix test cases | CODE |