]> Dogcows Code - chaz/tar/commit
tar: live within system-supplied limits on file descriptors
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 12 Sep 2010 21:26:31 +0000 (14:26 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 12 Sep 2010 21:27:13 +0000 (14:27 -0700)
commit8da503cad6e883b30c05749149084d24319063b4
tree19d5093867a77aba938b507ad9584b229f14c2a8
parentc743301494cf038412a89de6aabea16c04facf2a
tar: live within system-supplied limits on file descriptors

* NEWS: Note the change.  Mention dirfd and fdopendir.
* gnulib.modules: Add dirfd and fdopendir.  The code was already
using fdopendir; dirfd is a new need.
* src/common.h (open_searchdir_flags, get_directory_entries):
(subfile_open, restore_parent_fd, tar_stat_close): New decls.
(check_exclusion_tags): Adjust signature to match code change.
* src/create.c (IMPOSTOR_ERRNO): New constant.
(check_exclusion_tags): First arg is now a struct tar_stat_info
const *, not an fd.  All callers changed.
(dump_regular_file, dump_file0): A zero fd represents an unused
slot, so play it safe if the fd member is zero here.  A negative
fd represents the negation of an errno value, so play it safe and
do not assign -1 to fd merely because an open fails.
(open_failure_recover, get_directory_entries, restore_parent_fd):
(subfile_open): New functions.  These help to recover from file
descriptor exhaustion.
(dump_dir, dump_file0): Use them.
(dump_file0): Use tar_stat_close instead of rolling our own close.
* src/incremen.c (scan_directory): Use get_directory_entries,
subfile_open, etc., to recover from file descriptor exhaustion.
* src/names.c (add_hierarchy_to_namelist): Likewise.
(collect_and_sort_names): A negative fd represents the negation
of an errno value, so play it safe and do not assign -1 to fd.
* src/tar.c (decode_options): Set open_searchdir_flags.
Add O_CLOEXEC to all the open flags.
(tar_stat_close): New function, which knows how to deal with
new convention for directory streams and file descriptors.
Diagnose 'close' failures.
(tar_stat_destroy): Use it.
* src/tar.h (struct tar_stat_info): New member dirstream.
fd now has the negative of an errno value, not merely -1, if
the file could not be opened, so that failures to reopen directories
are better-diagnosed later.
* tests/Makefile.am (TESTSUITE_AT): Add extrac11.at.
* tests/testsuite.at: Likewise.
* tests/extrac11.at: New file.
NEWS
gnulib.modules
src/common.h
src/create.c
src/incremen.c
src/names.c
src/tar.c
src/tar.h
tests/Makefile.am
tests/extrac11.at [new file with mode: 0644]
tests/testsuite.at
This page took 0.023415 seconds and 4 git commands to generate.