mirror of
https://git.tukaani.org/xz.git
synced 2026-04-17 05:38:01 +00:00
xz: Prevent an integer overflow in --files and --files0
This requires a filename (or something that pretends to be a filename) of at least 2 GiB on a 32-bit platform, and that realloc() to SIZE_MAX / 2 + 1 bytes has succeeded. Fixes: https://github.com/tukaani-project/xz/pull/218 (cherry picked from commit 0ac3b93387c0191919ffa38de5f49f6b28164b35)
This commit is contained in:
parent
8538443d08
commit
32e80eb55e
@ -130,6 +130,16 @@ read_name(const args_info *args)
|
||||
// at least for one character to allow terminating the string
|
||||
// with '\0'.
|
||||
if (pos == size) {
|
||||
// Prevent an integer overflow. This is only possible
|
||||
// if allocating SIZE_MAX / 2 + 1 bytes has already
|
||||
// succeeded.
|
||||
//
|
||||
// Use ENOMEM to for the error message to avoid adding
|
||||
// a translatable string that will (almost) never be
|
||||
// displayed in practice.
|
||||
if (size > SIZE_MAX / 2)
|
||||
message_fatal("%s", strerror(ENOMEM));
|
||||
|
||||
size *= 2;
|
||||
name = xrealloc(name, size);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user