---
id: CVE-2025-67269
title: >-
  An integer underflow vulnerability exists in the `nextstate()` function in
  `gpsd/packet.c` of gpsd versions prior to commit
  `ffa1d6f40bca0b035fc7f5e563160ebb67199da7`
summary: >-
  An integer underflow vulnerability exists in the `nextstate()` function in
  `gpsd/packet.c` of gpsd versions prior to commit
  `ffa1d6f40bca0b035fc7f5e563160ebb67199da7`. When parsing a NAVCOM packet, the
  payload length is calculated using …
severity: high
cvss: 7.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'
cwe:
  - CWE-191
  - CWE-191
vendor: gpsd_project
product: gpsd
affected:
  - gpsd < 3.27.1
patched:
  - gpsd 3.27.1
published: '2026-01-02'
updated: '2026-06-30'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2025-67269'
references:
  - url: 'https://github.com/Jaenact/gspd_cve/blob/main/CVE-2025-67269/README.md'
    label: cve@mitre.org
  - url: 'https://gitlab.com/gpsd/gpsd'
    label: cve@mitre.org
  - url: >-
      https://gitlab.com/gpsd/gpsd/-/commit/ffa1d6f40bca0b035fc7f5e563160ebb67199da7
    label: cve@mitre.org
  - url: 'https://access.redhat.com/errata/RHSA-2026:0770'
    label: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c
  - url: 'https://access.redhat.com/errata/RHSA-2026:0771'
    label: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c
  - url: 'https://access.redhat.com/security/cve/CVE-2025-67269'
    label: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2426810'
    label: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-67269.json
    label: 0b0ca135-0b70-47e7-9f44-1890c2a1c46c
tags:
  - nvd
epss: 0.0055
epssPercentile: 0.43571
ingestedAt: '2026-06-30T13:26:50.193Z'
---

## Overview

An integer underflow vulnerability exists in the `nextstate()` function in `gpsd/packet.c` of gpsd versions prior to commit `ffa1d6f40bca0b035fc7f5e563160ebb67199da7`. When parsing a NAVCOM packet, the payload length is calculated using `lexer->length = (size_t)c - 4` without checking if the input byte `c` is less than 4. This results in an unsigned integer underflow, setting `lexer->length` to a very large value (near `SIZE_MAX`). The parser then enters a loop attempting to consume this massive number of bytes, causing 100% CPU utilization and a Denial of Service (DoS) condition.

## Affected

- `gpsd < 3.27.1`

## Remediation

Upgrade past the affected range:

- `gpsd 3.27.1`
