diff options
Diffstat (limited to '')
-rw-r--r-- | archival/cpio.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/archival/cpio.c b/archival/cpio.c index f0d990048..b033b3733 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 */ |
@@ -421,6 +427,7 @@ int cpio_main(int argc UNUSED_PARAM, char **argv) | |||
421 | #endif | 427 | #endif |
422 | #endif | 428 | #endif |
423 | "owner\0" Required_argument "R" | 429 | "owner\0" Required_argument "R" |
430 | "file\0" Required_argument "F" | ||
424 | "verbose\0" No_argument "v" | 431 | "verbose\0" No_argument "v" |
425 | "null\0" No_argument "0" | 432 | "null\0" No_argument "0" |
426 | "quiet\0" No_argument "\xff" | 433 | "quiet\0" No_argument "\xff" |