Age | Commit message (Collapse) | Author | Files |
|
Bug reported by Ross Burton. See
<http://lists.gnu.org/archive/html/bug-cpio/2018-11/msg00000.html>
* src/util.c: Keep static copy of the buffer pointer; always
assign it to file_hdr->c_name. Use x2realloc for memory management.
|
|
|
|
Ensure that cpio_safer_name_suffix always works with dynamically
allocated buffer, and that it has size of at least 32 bytes.
Then, any call to cpio_safer_name_suffix is safe (it requires at
least 2 bytes in the buffer).
Also ensure that c_namesize is always correctly initialized (by
cpio_set_c_name) to avoid undefined behavior when reading
file_hdr.c_namesize (previously happened for tar archives).
References:
http://www.mail-archive.com/bug-cpio@gnu.org/msg00545.html
* src/copyin.c (query_rename): Drop the hack, as we now work with
dynamically allocated buffer. Use cpio_set_c_name.
(create_defered_links_to_skipped): Use cpio_set_c_name rather than
manual assignment.
(read_name_from_file): New function to avoid C&P.
(read_in_old_ascii, read_in_new_ascii, read_in_binary): Use
read_name_from_file.
(process_copy_in): Initialize file_hdr.c_namesize.
* src/copyout.c (process_copy_out): Use cpio_set_c_name.
* src/cpiohdr.h (cpio_set_c_name): New prototype.
* src/tar.c (read_in_tar_header): Use cpio_set_c_name.
* src/util.c (cpio_set_c_name): New function to set
file_hdr->c_name and c_namesize from arbitrary string.
(cpio_safer_name_suffix): Some docs fixes.
* tests/inout.at: Also test copy-in, and try various formats.
|
|
Complements: 3945f9db44c935608caa5f0
* src/util.c (find_inode_val): Drop unused variable.
(get_inode_and_dev): Function doesn't return any value, drop the
return value in definition.
|
|
|
|
* am/quoting.m4: New file.
* configure.ac: Set default quoting style.
* src/copyin.c (long_format): Use quotearg.
(print_name_with_quoting): Remove.
* src/extern.h (print_name_with_quoting): Remove proto.
|
|
* doc/cpio.texi: Prominently mention, that --absolute-file-names is
the default.
* doc/cpio.1: Likewise.
|
|
In the default case, the build_mt flag is not set. This leads to an
error at configure time like:
./configure: line 26866: test: =: unary operator expected
Change to use the variable name autoconf creates for us and quote it
so we never get weird expansion errors.
|
|
|
|
|
|
|
|
* src/copyin.c (process_copy_in): Skip records with zero filename length.
|
|
* bootstrap.conf: Reintroduce changes added by
c7e60954dc7945635194 and removed by cleanup in
0396591026410f9.
* lib/Makefile.am: Honor the ^pax prefix.
* po/POTFILES.in: Likewise.
|
|
|
|
|
|
* doc/Makefile.am: Change 'manual' goal.
* doc/gendocs.sh: New file.
* doc/gendocs_template: ps output is not built.
|
|
* headers/Makefile.am: Remove.
* headers/fnmatch.h: Remove.
* Makefile.am: Update.
* configure.ac: Update.
|
|
* gnulib: New submodule.
* paxutils: New submodule.
* .gitignore: Updage
* .gitmodules: Update
* README-hacking: Update.
* bootstrap: Install slightly modified version from the gnulib repo.
* bootstrap.conf: Add paxutils-related stuff.
* po/.gitignore: Update.
* tests/symlink-bad-length.at: Fix expected output.
* src/copyin.c: Tiny change.
* src/util.c: Likewise.
|
|
* src/util.c: Return non-zero exit code if EOF is hit prematurely.
* tests/symlink-bad-length.at: Revert to original archive: there's
no use testing for recovery, because that depends on the host
architecture. Don't test for exit code as well (same reason).
Account for eventual warning messages.
|
|
* src/copyin.c (copyin_link): Fix null dereference.
(read_in_header): Fix error recovery (bug introduced by
27e0ae55).
* tests/symlink-bad-length.at: Test error recovery.
Catch various architecture-dependent error messages (suggested
by Pavel Raiskup).
|
|
|
|
* src/copyin.c (get_link_name): Fix range checking.
* tests/symlink-bad-length.at: Change expected error message.
|
|
See http://lists.gnu.org/archive/html/bug-cpio/2014-11/msg00007.html
* src/copyin.c (get_link_name): New function.
(list_file, copyin_link): use get_link_name
* tests/symlink-bad-length.at: New file.
* tests/symlink-long.at: New file.
* tests/Makefile.am: Add new files.
* tests/testsuite.at: Likewise.
|
|
* src/util.c (inode_val): New member trans_inode
(find_inode_val): New function.
(find_inode_file): Rewrite using the above.
(add_inode): Initialize the trans_inode member
depending on the value of renumber_inodes_option.
(get_inode_and_dev): New function.
(stat_to_cpio): Use get_inode_and_dev.
(arf_stores_inode_p): New function.
* src/extern.h (renumber_inodes_option)
(ignore_devno_option): New externs.
* src/global.c (renumber_inodes_option)
(ignore_devno_option): New variables.
* src/main.c: Add new options.
* NEWS: Document changes.
* doc/cpio.1: Document new options.
* doc/cpio.texi: Likewise.
|
|
The script logic failed if AC_INIT was split among two lines. Reported
by Pavel.
* bootstrap (extract_package_name): Rewrite as m4 script to allow
for multiline AC_INIT.
|
|
|
|
The IDs supplied with the -R option are treated as numeric (without
looking them up in the system database), when prefixed with +. This
allows to force using numeric value if a user (group) with a numeric
name exists in the database.
Reported by Joshua Briefman <sirgatez@gmail.com>.
* src/userspec.c (parse_user_spec): Use + as an indicator of
a numeric UID/GID.
* doc/cpio.1: Document changes.
* doc/cpio.texi: Likewise.
|
|
|
|
* .gitignore: Update.
* NEWS: Update.
* doc/cpio.1: Rewrite.
* doc/cpio.texi: Major revamp.
* src/main.c (options): Fix sectioning of the help output.
(parse_opt):
* src/util.c: Use PAXEXIT_FAILURE to indicate an error.
|
|
* NEWS: Update.
* bootstrap (gnulib_extra_files): Remove "missing"
* configure.ac: Do not distribute shar archive.
Define CPIO_MT_COND
* doc/Makefile.am: Always install manpages (mt.1 and rmt.8 --
depending on whether the corresponding programs are built).
* doc/cpio.1: Update.
* doc/mt.1: Update.
* lib/Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
* src/Makefile.am: Likewise.
* tests/Makefile.am: Likewise.
|
|
* src/cpiohdr.h (cpio_file_stat) <c_chksum>: Change type to
uint32_t.
* src/extern.h (crc): Change type to uint32_t.
* src/global.c: Likewise.
* src/copyout.c (read_for_checksum): Return uint32_t.
* src/copyin.c: Fix printf formats.
|
|
* src/extern.h (delayed_seek_count): Remove.
(disk_empty_output_buffer): Change signature.
* src/util.c (disk_empty_output_buffer): Take two arguments.
Correctly handle partial writes (errno is not meaningful).
(delayed_seek_count): Remove variable.
(sparse_write): Change return type and signature. Rewrite.
Return number actual number of bytes written or -1 on error.
Check returns from lseek and write.
* src/copyin.c (copyin_regular_file): Call disk_empty_output_buffer
with flush=true before closing the file.
* src/copypass.c (process_copy_pass): Likewise.
|
|
* configure.ac: Use gettext 0.18
* doc/.gitignore: Add parse-datetime.texi.
* lib/Makefile.am (libpax_a_SOURCES): Add exit-status.c
* src/copyin.c (read_pattern_file): Use open_fatal if opening
pattern file failed.
* src/util.c (set_file_times): Use fdutimens.
|
|
* gnulib.modules: Add getline, required by rmt.
* src/mt.c (fatal_exit): Change exit code to
MT_EXIT_FAILURE.
|
|
* tests/setstat01.at: Set write permission on the directory
before attempting to rename it.
* tests/setstat02.at: Likewise.
|
|
* .gitignore: Sort.
* src/cpiohdr.h: Fix indentation of preprocessor statements.
* src/filetypes.h: Likewise.
|
|
* gnulib.modules: Add xgetcwd.
* src/copypass.c (process_copy_pass): Convert directory_name
to absolute if -D option was given.
|
|
* bootstrap (symlink_to_dir): Fix symlink calculation.
|
|
* src/filetypes.h: Remove declarations of stat and lstat.
|
|
* src/copyout.c (count_defered_links_to_dev_ino): Return size_t.
(last_link): Do not use superfluous local variable.
* src/util.c (copy_files_disk_to_tape)
(copy_files_disk_to_disk): Shut down gcc warnings.
|
|
* .gitignore: Update.
* am/.gitignore: New file.
* src/.gitignore: Add .gdbinit.
* tests/symlink-to-stdout.at: Fix keywords.
|
|
* src/copyin.c (process_copy_in): Call change_dir.
* src/copyout.c (process_copy_out): Likewise.
* src/copypass.c (process_copy_pass): Likewise.
* src/extern.h (change_directory_option): New extern.
(change_dir): New proto.
* src/global.c (change_directory_option): New global.
* src/main.c (options): New option --directory.
(parse_opt): Handle the --directory option.
* src/util.c (change_dir): New proto.
* doc/cpio.texi: Document the --directory option.
|
|
* src/copyin.c (copyin_link): Skip an appropriate number of bytes
when to_stdout_option flag is set.
* tests/symlink-to-stdout.at: New test case.
* tests/Makefile.am (TESTSUITE_AT): Add symlink-to-stdout.at.
* tests/testsuite.at: Include symlink-to-stdout.at.
|
|
* configure.ac, NEWS: Raise version number.
|
|
* src/main.c (cpio_options): Remove unused options.
* src/util.c (cpio_create_dir): Fix conditional.
* NEWS: Update.
|
|
* src/copyin.c (copyin_mkdir): Remove.
(copyin_directory): Remove.
(copyin_file): Use cpio_create_dir instead
of copyin_directory.
* src/copypass.c (process_copy_pass): Use cpio_create_dir
to create directories.
* src/extern.h (delay_cpio_set_stat): New proto.
* src/util.c (delay_cpio_set_stat): New function.
(delay_set_stat): Rewrite as a wrapper to the above.
(cpio_create_dir): New function.
* tests/setstat01.at: Fix testcase.
* tests/setstat02.at: Likewise.
* tests/setstat03.at: New testcase.
* tests/setstat04.at: New testcase.
* tests/setstat05.at: New testcase.
* tests/Makefile.am: Add new testcases.
* tests/testsuite.at: Likewise.
|
|
* src/copyin.c (create_defered_links): Use ino_t for
inode numbers.
(create_defered_links_to_skipped): Likewise.
(process_copy_in): Add typecast to inode fprintf argument.
* src/copyout.c (count_defered_links_to_dev_ino)
(writeout_other_defers): Use ino_t for inode numbers.
* src/copypass.c (link_to_maj_min_ino): Likewise.
* src/util.c (struct inode_val): Likewise.
(find_inode_file, add_inode): Likewise.
* src/extern.h (link_to_maj_min_ino)
(find_inode_file, add_inode): Change signature.
|
|
* configure.ac: Raise version number to 2.10.91.
Require autotools 2.63/1.11.1.
Create shar archive.
Enable silent rules by default.
* Makefile.am (AUTOMAKE_OPTIONS): Remove.
* lib/Makefile.am (rmt-command.h): Silent rule.
* NEWS: Update.
|
|
|
|
writing. Fix debian bug #458079.
* src/copyin.c (copyin_mkdir): New function.
(copyin_directory): Use copyin_mkdir to create directory.
Call set_perms only when safe, otherwise use repair_delayed_set_stat.
* src/extern.h (cpio_to_stat): New prototype.
(repair_delayed_set_stat): Change prototype.
* src/util.c (cpio_to_stat): New function.
(repair_delayed_set_stat): New function.
* tests/setstat01.at: New test case.
* tests/setstat02.at: New test case.
* tests/Makefile.am (TESTSUITE_AT): Add setstat01.at and setstat02.at
* tests/testsuite.at: Include setstat01.at and setstat02.at.
* NEWS: Update.
|