9136384dc2
owner restore is not requested. If you ask for permissions to be restored but not owner, you will now get no error if suid/sgid bits cannot be set. (It's a security hole to restore suid/sgid bits if the owner/group aren't restored.) This fixes an obscure problem where a simple "tar -xf" with no other options will sometimes fail gratuitously because of suid/sgid bits. This is causing occasional problems for people using bsdtar as a drop-in replacement for "that other tar program." ;-) Note: If you do ask for owner restore, then suid/sgid restore failures still issue an error. This only suppresses the error in the case where an suid/sgid bit restore fails because of an owner mismatch and owner restore was not requested. Approved by: re (bmah) MFC after: 7 days |
||
---|---|---|
.. | ||
main.c | ||
Makefile | ||
read_open_memory.c | ||
README | ||
test_acl_basic.c | ||
test_acl_pax.c | ||
test_archive_api_feature.c | ||
test_bad_fd.c | ||
test_entry.c | ||
test_read_compress_program.c | ||
test_read_data_large.c | ||
test_read_extract.c | ||
test_read_format_ar.c | ||
test_read_format_cpio_bin_bz2.c | ||
test_read_format_cpio_bin_gz.c | ||
test_read_format_cpio_bin_Z.c | ||
test_read_format_cpio_bin.c | ||
test_read_format_cpio_odc.c | ||
test_read_format_cpio_svr4_gzip.c | ||
test_read_format_cpio_svr4c_Z.c | ||
test_read_format_empty.c | ||
test_read_format_gtar_gz.c | ||
test_read_format_gtar_sparse.c | ||
test_read_format_iso_gz.c | ||
test_read_format_isorr_bz2.c | ||
test_read_format_pax_bz2.c | ||
test_read_format_tar.c | ||
test_read_format_tbz.c | ||
test_read_format_tgz.c | ||
test_read_format_tz.c | ||
test_read_format_zip.c | ||
test_read_large.c | ||
test_read_pax_truncated.c | ||
test_read_position.c | ||
test_read_truncated.c | ||
test_tar_filenames.c | ||
test_write_compress_program.c | ||
test_write_disk_perms.c | ||
test_write_disk_secure.c | ||
test_write_disk.c | ||
test_write_format_ar.c | ||
test_write_format_cpio_empty.c | ||
test_write_format_cpio.c | ||
test_write_format_shar_empty.c | ||
test_write_format_tar_empty.c | ||
test_write_format_tar.c | ||
test_write_open_memory.c | ||
test.h |
$FreeBSD$ This is the test harness for libarchive. It compiles into a single program "libarchive_test" that is intended to exercise as much of the library as possible. It is, of course, very much a work in progress. Each test is a function named test_foo in a file named test_foo.c. Note that the file name is the same as the function name. Each file must start with this line: #include "test.h" The test function must be declared with a line of this form DEFINE_TEST(test_foo) Nothing else should appear on that line. When you add a test, please update the Makefile to add your file to the list of tests. The Makefile and main.c use various macro trickery to automatically collect a list of test functions to be invoked. Each test function can rely on the following: * The current directory will be a freshly-created empty directory suitable for that test. (The top-level main() creates a directory for each separate test and chdir()s to that directory before running the test.) * The test function should use assert(), assertA() and similar macros defined in test.h. If you need to add new macros of this form, feel free to do so. * You are encouraged to document each assertion with a failure() call just before the assert. The failure() function is a printf-like function whose text is displayed only if the assertion fails. It can be used to display additional information relevant to the failure: failure("The data read from file %s did not match the data written to that file.", filename); assert(strcmp(buff1, buff2) == 0); * Tests are encouraged to be economical with their memory and disk usage, though this is not essential. * Disable tests on specific platforms as necessary. Please don't use config.h to adjust feature requirements, as I want the tests to also serve as a check on the configure process. The following form is appropriate: #if !defined(__PLATFORM) && !defined(__Platform2__) assert(xxxx) #endif