Security Advisories (4)
CVE-2024-56406 (2025-04-13)

A heap buffer overflow vulnerability was discovered in Perl. Release branches 5.34, 5.36, 5.38 and 5.40 are affected, including development versions from 5.33.1 through 5.41.10. When there are non-ASCII bytes in the left-hand-side of the `tr` operator, `S_do_trans_invmap` can overflow the destination pointer `d`.    $ perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;'    Segmentation fault (core dumped) It is believed that this vulnerability can enable Denial of Service and possibly Code Execution attacks on platforms that lack sufficient defenses.

CVE-2026-8376 (2026-05-25)

Perl versions through 5.43.10 have a heap buffer overflow when compiling regular expressions with a repeated fixed string on 32-bit builds. Perl_study_chunk in regcomp_study.c checked the size of the joined substring buffer in characters rather than bytes. For a quantified fixed substring with a large minimum count, the byte length mincount * l could overflow SSize_t, producing an undersized SvGROW allocation; the subsequent copy writes past the end of the buffer. A caller that compiles an attacker-controlled regular expression on a 32-bit perl build triggers a heap buffer overflow at compile time.

CVE-2025-40909 (2025-05-30)

Perl threads have a working directory race condition where file operations may target unintended paths. If a directory handle is open at thread creation, the process-wide current working directory is temporarily changed in order to clone that handle for the new thread, which is visible from any third (or more) thread already running. This may lead to unintended operations such as loading code or accessing files from unexpected locations, which a local attacker may be able to exploit. The bug was introduced in commit 11a11ecf4bea72b17d250cfb43c897be1341861e and released in Perl version 5.13.6

CVE-2026-4176 (2026-03-29)

Perl versions from 5.9.4 before 5.40.4-RC1, from 5.41.0 before 5.42.2-RC1, from 5.43.0 before 5.43.9 contain a vulnerable version of Compress::Raw::Zlib. Compress::Raw::Zlib is included in the Perl package as a dual-life core module, and is vulnerable to CVE-2026-3381 due to a vendored version of zlib which has several vulnerabilities, including CVE-2026-27171. The bundled Compress::Raw::Zlib was updated to version 2.221 in Perl blead commit c75ae9cc164205e1b6d6dbd57bd2c65c8593fe94.

NAME

installhtml - converts a collection of POD pages to HTML format.

SYNOPSIS

installhtml  [--help] [--podpath=<name>:...:<name>] [--podroot=<name>]
     [--htmldir=<name>] [--htmlroot=<name>]  [--norecurse] [--recurse]
     [--splithead=<name>,...,<name>]   [--splititem=<name>,...,<name>]
     [--ignore=<name>,...,<name>]  [--verbose]

DESCRIPTION

installhtml converts a collection of POD pages to a corresponding collection of HTML pages. This is used to convert the pod pages found in the perl distribution. (It is not intended as a general-purpose converter/installer of POD pages in HTML format. See Pod::Html.)

OPTIONS

--help help

Displays the usage.

--podroot POD search path base directory

The base directory to search for all .pod and .pm files to be converted. Default is current directory.

--podpath POD search path

The list of directories to search for .pod and .pm files to be converted. Default is 'podroot/lib'.

--recurse recurse on subdirectories

Whether or not to convert all .pm and .pod files found in subdirectories too. Default is to not recurse.

--htmldir HTML destination directory

The base directory which all HTML files will be written to. This should be a path relative to the filesystem, not the resulting URL.

--htmlroot URL base directory

The base directory which all resulting HTML files will be visible at in a URL. The default is '/'.

--splithead POD files to split on =head directive

Comma-separated list of pod files to split by the =head directive. The .pod suffix is optional. These files should have names specified relative to podroot.

--splititem POD files to split on =item directive

Comma-separated list of all pod files to split by the =item directive. The .pod suffix is optional. installhtml does not do the actual split, rather it invokes splitpod, a separate program in the Perl 5 core distribution, to do the dirty work. As with --splithead, these files should have names specified relative to podroot.

--splitpod Directory containing the splitpod program

The directory containing the splitpod program. The default is 'podroot/pod'.

--ignore files to be ignored

Comma-separated of files that shouldn't be installed, given relative to podroot.

--verbose verbose output

Self-explanatory.

EXAMPLE

The following command-line is an example of the one we use to convert perl documentation:

    ./installhtml --podpath=lib:ext:pod:vms   \
			--podroot=/usr/src/perl     \
			--htmldir=/perl/nmanual     \
			--htmlroot=/perl/nmanual    \
			--splithead=pod/perlipc     \
			--splititem=pod/perlfunc    \
			--recurse \
			--verbose

AUTHOR

Chris Hall <hallc@cs.colorado.edu>