---
id: CVE-2026-120651
title: >-
  CGI versions before 5.00 for Perl allow an infinite loop on a short request
  body when $DISABLE_UPLOADS is set
summary: >-
  CGI versions before 5.00 for Perl allow an infinite loop on a short request
  body when $DISABLE_UPLOADS is set.


  When $CGI::PUTDATA_UPLOAD or an upload hook is set, read_postdata_putdata
  takes a request body that is not a form submission.…
severity: none
cwe:
  - CWE-835
product: CGI
affected:
  - CGI < 5.00
published: '2026-11-03'
updated: '2026-11-03'
sourceUpdated: '2026-11-03T23:41:17.179Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-120651'
references:
  - url: 'https://metacpan.org/release/LEEJO/CGI-4.72/source/lib/CGI.pm'
  - url: 'https://metacpan.org/release/LEEJO/CGI-5.00/changes'
  - url: >-
      https://github.com/leejo/CGI.pm/commit/16d9f61acf8b844b7360e8d726338e3ce34dfa9f.patch
  - url: >-
      https://github.com/leejo/CGI.pm/commit/8a78305065690461ae283fa24e5ebe4ec8a22fbc.patch
tags:
  - cve.org
epss: 0.0018
epssPercentile: 0.0759
ingestedAt: '2026-11-05T20:33:06.619Z'
---

## Overview

CGI versions before 5.00 for Perl allow an infinite loop on a short request body when $DISABLE_UPLOADS is set.

When $CGI::PUTDATA_UPLOAD or an upload hook is set, read_postdata_putdata takes a request body that is not a form submission. With $CGI::DISABLE_UPLOADS set, it discards the body by reading until Content-Length bytes have arrived. Once a body shorter than its Content-Length runs out, every read returns 0, so the loop never ends.

A client can keep a server process spinning with one such request.

## Affected

- `CGI < 5.00`

## Remediation

Upgrade to CGI 5.00 or later.
