Skip to content

cpio: Reject malformed header fields - #395

Merged
martinpitt merged 1 commit into
amutable:mainfrom
daandemeyer:cpio-header-check
Nov 10, 2026
Merged

martinpitt merged 1 commit into
amutable:mainfrom
daandemeyer:cpio-header-check

Conversation

@daandemeyer

Copy link
Copy Markdown
Member

read() parses the hex fields of a newc header with int(), which also accepts a sign, blanks and
underscores. A negative filesize can point the next header back at the same one, and read() then yields
that entry forever. Let's refuse a header that contains anything but hex digits, since archives from
outside the project, such as the payload of a source rpm, can contain such a field.

read() parses the hex fields of a newc header with int(), which also accepts
a sign, blanks and underscores. For an entry named demo, a filesize of
-0000074 points the next header back at the same one, and read() then yields
that entry forever. An archive from outside the project, such as the payload
of a source rpm, can contain such a field. Let's refuse a header that
contains anything but hex digits.

Signed-off-by: Daan De Meyer <daan@amutable.com>
@martinpitt
martinpitt merged commit 3af6663 into amutable:main Nov 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants