From ee1b3b1042c8077cda5027bc0ce317662a1d8feb Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 11 Jul 2008 22:20:59 +0000 Subject: cpio: on unpack, limit filename length to 8k; shorten comment a bit --- archival/cpio.c | 28 +++++++++++++--------------- archival/libunarchive/get_header_cpio.c | 2 ++ 2 files changed, 15 insertions(+), 15 deletions(-) (limited to 'archival') diff --git a/archival/cpio.c b/archival/cpio.c index 530af802a..9784121b1 100644 --- a/archival/cpio.c +++ b/archival/cpio.c @@ -178,19 +178,19 @@ static int cpio_o(void) } #endif -/* GNU cpio (GNU cpio) 2.9 help (abridged): +/* GNU cpio 2.9 --help (abridged): - Main operation mode: + Modes: -i, --extract Extract files from an archive -o, --create Create the archive - -p, --pass-through Copy-pass mode (was ist das?!) + -p, --pass-through Copy-pass mode [was ist das?!] -t, --list List the archive - Operation modifiers valid in any mode: + Options valid in any mode: --block-size=SIZE I/O block size = SIZE * 512 bytes -B I/O block size = 5120 bytes -c Use the old portable (ASCII) archive format - -C, --io-size=NUMBER I/O block size to the given NUMBER bytes + -C, --io-size=NUMBER I/O block size in bytes -f, --nonmatching Only copy files that do not match given pattern -F, --file=FILE Use FILE instead of standard input or output -H, --format=FORMAT Use given archive FORMAT @@ -204,7 +204,7 @@ static int cpio_o(void) -W, --warning=FLAG Control warning display: 'none','truncate','all'; multiple options accumulate - Operation modifiers valid only in --extract mode: + Options valid only in --extract mode: -b, --swap Swap both halfwords of words and bytes of halfwords in the data (equivalent to -sS) -r, --rename Interactively rename files @@ -215,31 +215,29 @@ static int cpio_o(void) extract or list from FILE --only-verify-crc Verify CRC's, don't actually extract the files - Operation modifiers valid only in --create mode: + Options valid only in --create mode: -A, --append Append to an existing archive -O FILE File to use instead of standard output - Operation modifiers valid only in --pass-through mode: + Options valid only in --pass-through mode: -l, --link Link files instead of copying them, when possible - Operation modifiers valid in --extract and --create modes: + Options valid in --extract and --create modes: --absolute-filenames Do not strip file system prefix components from the file names --no-absolute-filenames Create all files relative to the current dir - Operation modifiers valid in --create and --pass-through modes: + Options valid in --create and --pass-through modes: -0, --null A list of filenames is terminated by a NUL -a, --reset-access-time Reset the access times of files after reading them -I FILE File to use instead of standard input - -L, --dereference Dereference symbolic links (copy the files + -L, --dereference Dereference symbolic links (copy the files that they point to instead of copying the links) -R, --owner=[USER][:.][GROUP] Set owner of created files - Operation modifiers valid in --extract and --pass-through modes: + Options valid in --extract and --pass-through modes: -d, --make-directories Create leading directories where needed - -m, --preserve-modification-time - Retain previous file modification times when - creating files + -m, --preserve-modification-time Retain mtime when creating files --no-preserve-owner Do not change the ownership of the files --sparse Write files with blocks of zeros as sparse files -u, --unconditional Replace all files unconditionally diff --git a/archival/libunarchive/get_header_cpio.c b/archival/libunarchive/get_header_cpio.c index 95d36cca8..307d2a66d 100644 --- a/archival/libunarchive/get_header_cpio.c +++ b/archival/libunarchive/get_header_cpio.c @@ -37,6 +37,7 @@ char FAST_FUNC get_header_cpio(archive_handle_t *archive_handle) /* There can be padding before archive header */ data_align(archive_handle, 4); +//TODO: this function is used only here, make it static? if (archive_xread_all_eof(archive_handle, (unsigned char*)cpio_header, 110) == 0) { goto create_hardlinks; } @@ -61,6 +62,7 @@ char FAST_FUNC get_header_cpio(archive_handle_t *archive_handle) file_header->mtime = mtime; file_header->size = size; + namesize &= 0x1fff; /* paranoia: names can't be that long */ file_header->name = xzalloc(namesize + 1); /* Read in filename */ xread(archive_handle->src_fd, file_header->name, namesize); -- cgit v1.2.3