---
id: CVE-2026-67303
title: >-
  FreeRDP before 3.29.0 contains a reachable assertion
  (WINPR_ASSERT(OutputBufferLength == BytesReturned)) in
  serial_process_irp_device_control() in channels/serial/client/serial_main.c
summary: >-
  FreeRDP before 3.29.0 contains a reachable assertion
  (WINPR_ASSERT(OutputBufferLength == BytesReturned)) in
  serial_process_irp_device_control() in channels/serial/client/serial_main.c.
  When serial device redirection is enabled and a serv…
severity: medium
cvss: 4.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L'
cwe:
  - CWE-617
published: '2026-08-01'
updated: '2026-08-01'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-67303'
references:
  - url: >-
      https://github.com/FreeRDP/FreeRDP/commit/1cc783d4c78bd2f66d3a8582dfe70a663d141444
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/FreeRDP/FreeRDP/commit/5370fb26fbf034ecd11d3026b6ad639b5fff493f
    label: disclosure@vulncheck.com
  - url: 'https://github.com/FreeRDP/FreeRDP/security/advisories/GHSA-pfxq-3qmw-8vjx'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/freerdp-before-denial-of-service-via-serial-devicecontrol
    label: disclosure@vulncheck.com
tags:
  - nvd
ingestedAt: '2026-08-02T07:18:01.416Z'
epss: 0.00245
epssPercentile: 0.16034
---

## Overview

FreeRDP before 3.29.0 contains a reachable assertion (WINPR_ASSERT(OutputBufferLength == BytesReturned)) in serial_process_irp_device_control() in channels/serial/client/serial_main.c. When serial device redirection is enabled and a server-controlled IRP_MJ_DEVICE_CONTROL request specifies an unsupported IOCTL with a non-zero OutputBufferLength, CommDeviceIoControl() can fail with BytesReturned = 0, causing the mismatch to trigger the assertion and abort the client process (denial of service).

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
