aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2025-04-21 04:41:50 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2025-04-21 04:42:33 +0200
commit5f07327251c93184dfcfc8d978fc35705930ec53 (patch)
tree8ca437dbedbdefa0458615a2b7342aa1ed20b53e
parentf13f68288f45708ff12e0f6853def5910acd32c7 (diff)
downloadbusybox-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.c6
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 */