Security Advisories (1)
CVE-2026-115825 (2026-10-25)

HTTP::Server::PSGI versions before 1.0056 for Perl allow a single request to crash the server by declaring a large Content-Length. The request body is read with sysread() calls sized by the remaining Content-Length. Perl grows the read buffer to the requested length before any data arrives, so the server tries to allocate as much memory as the client declares. A remote attacker can send one request with a large Content-Length and a few body bytes, and perl exits with an out-of-memory error before the application is called. HTTP::Server::PSGI runs as a single process, so the server stays down until restarted.

NAME

HTTP::Message::PSGI - Converts HTTP::Request and HTTP::Response from/to PSGI env and response

SYNOPSIS

use HTTP::Message::PSGI;

# $req is HTTP::Request, $res is HTTP::Response
my $env = req_to_psgi($req);
my $res = res_from_psgi([ $status, $headers, $body ]);

# Adds methods to HTTP::Request/Response class as well
my $env = $req->to_psgi;
my $res = HTTP::Response->from_psgi([ $status, $headers, $body ]);

DESCRIPTION

HTTP::Message::PSGI gives you convenient methods to convert an HTTP::Request object to a PSGI env hash and convert a PSGI response arrayref to a HTTP::Response object.

If you want the other way around, see Plack::Request and Plack::Response.

METHODS

req_to_psgi
my $env = req_to_psgi($req [, $key => $val ... ]);

Converts a HTTP::Request object into a PSGI env hash reference.

HTTP::Request::to_psgi
my $env = $req->to_psgi;

Same as req_to_psgi but an instance method in HTTP::Request.

res_from_psgi
my $res = res_from_psgi([ $status, $headers, $body ]);

Creates a HTTP::Response object from a PSGI response array ref.

HTTP::Response->from_psgi
my $res = HTTP::Response->from_psgi([ $status, $headers, $body ]);

Same as res_from_psgi, but is a class method in HTTP::Response.

AUTHOR

Tatsuhiko Miyagawa

SEE ALSO

HTTP::Request::AsCGI HTTP::Message Plack::Test