diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2025-04-21 04:41:50 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2025-04-21 04:42:33 +0200 |
commit | 5f07327251c93184dfcfc8d978fc35705930ec53 (patch) | |
tree | 8ca437dbedbdefa0458615a2b7342aa1ed20b53e | |
parent | f13f68288f45708ff12e0f6853def5910acd32c7 (diff) | |
download | busybox-w32-busybox.tar.gz busybox-w32-busybox.tar.bz2 busybox-w32-busybox.zip |
cpio: error out if the file to be achived is >=4GBbusybox
function old new delta
.rodata 105715 105751 +36
cpio_o 1145 1167 +22
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 58/0) Total: 58 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | archival/cpio.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/archival/cpio.c b/archival/cpio.c index f0d990048..7b01ee3a2 100644 --- a/archival/cpio.c +++ b/archival/cpio.c | |||
@@ -350,6 +350,12 @@ static NOINLINE int cpio_o(void) | |||
350 | st.st_dev = st.st_rdev = 0; | 350 | st.st_dev = st.st_rdev = 0; |
351 | #endif | 351 | #endif |
352 | 352 | ||
353 | if (sizeof(st.st_size) > 4 | ||
354 | && st.st_size > (off_t)0xffffffff | ||
355 | ) { | ||
356 | bb_error_msg_and_die("error: file '%s' is larger than 4GB", name); | ||
357 | } | ||
358 | |||
353 | bytes += printf("070701" | 359 | bytes += printf("070701" |
354 | "%08X%08X%08X%08X%08X%08X%08X" | 360 | "%08X%08X%08X%08X%08X%08X%08X" |
355 | "%08X%08X%08X%08X" /* GNU cpio uses uppercase hex */ | 361 | "%08X%08X%08X%08X" /* GNU cpio uses uppercase hex */ |