summaryrefslogtreecommitdiff
path: root/bin/pax
AgeCommit message (Collapse)Author
2016-08-26Need <time.h> for time() and others. Pulled in by coincidence previouslyPhilip Guenther
noted by tb@
2016-08-26-E NONE has *never* worked; it was always -E none. It's a dubious optionPhilip Guenther
value that merits a warning in the manpage and using 2 billion will get you practically the same effect, so delete the -E none support
2016-08-26options.h is only used by options.c; merge it into the .c filePhilip Guenther
reduce and sort #includes
2016-08-26reduce and sort #includesPhilip Guenther
2016-08-26tables.h is only used by tables.c; merge it into the .c filePhilip Guenther
<sys/time.h> is unnecessary; sort the #includes
2016-08-26<sys/time.h>, <errno.h>, and <stdlib.h> are unnecessary; sort #includesPhilip Guenther
2016-08-26sel_subs.h is only used by sel_subs.c; merge it into the .c filePhilip Guenther
<sys/time.h> and <unistd.h> are unnecessary, but <time.h> is; sort #includes
2016-08-26pat_rep.h is only used by pat_rep.c; merge it into the .c filePhilip Guenther
<sys/time.h>, <errno.h> and <unistd.h> are unnecessary; sort #includes
2016-08-26ftree.h is only used by ftree.c; merge it into the .c filePhilip Guenther
<sys/time.h> is unnecessary; sort #includes
2016-08-26Don't need <sys/time.h> or "options.h" herePhilip Guenther
2016-08-26cache.h is only used by cache.c; merge it into the .c filePhilip Guenther
<unistd.h> and <sys/time.h> are unneeded here ok by general acclaim
2016-08-25Replace name_{uid,gid}() with the libc routines user_from_uid() andPhilip Guenther
group_from_gid(). Eliminate some superfluous strncpy() calls. ok millert@
2016-08-24Make list-like output go to stderr when appending to an archive on stdout.Philip Guenther
Simplify the recognition of -f- and TAPE=- as meaning stdin/stdout. ok millert@
2016-08-24Treat cpio's -t option as a modifier to -i, so they're ordering independentPhilip Guenther
ok millert@
2016-08-23Instead of doing strcmp(argv0), track the invocation mode (pax/tar/cpio)Philip Guenther
in a separate variable ok deraadt@
2016-08-23Only try to set the times on a directory once, at the end, to avoidPhilip Guenther
duplication of warning messages ok krw@
2016-08-16Add HISTORY.Ingo Schwarze
From Sevan Janiyan <venture37 at geeklan dot co dot uk>. Verified using the CSRG archive CD.
2016-08-14Remove many unnecessary casts. Verified by comparing generated code onPhilip Guenther
both ILP32 and LP64. ok millert@
2016-08-14Replace u_quad_t with unsigned long long and replace "uqd" with "ull" inPhilip Guenther
function names to match. Pull some tangled assignments out of conditions and use >>= where possible. ok millert@
2016-06-23allow creation of devices or fifo without -p (as it is already allowed with -p)Sebastien Marie
diff from trondd at kagu-tsuchi com, enhanced by me for reordering promises ok deraadt@
2016-06-03new style overlords say to use continue in empty loops.Ted Unangst
this is easier to see and self documenting. ok openbsd
2016-04-19Switch from fgetln() to getline() to simplify error handling.Philip Guenther
Use syswarn() in more places which set errno and regularize the error messages. Skip empty lines in the input read for tar -T, cpio -E, and cpio stdin. based on diff from mmcc@ ok millert@
2016-02-16Ignore trailing slashes and skip over duplicate slashes in chk_path() toPhilip Guenther
avoid infinite loop when creating intermediate directories Fix based on diff by Nicolas Bedos (nicolas.bedos (at) gmail.com) ok millert@ ok and tweak zhuk@,
2016-02-15To archive a 101 character absolute path in ustar format we mustPhilip Guenther
split it on a slash other than the leading one. Fix based on patches from Peter Fokker (openbsd (at) berestijn.nl) and Peter Bisroev (peter (at) int19h.net)
2016-01-01don't declar main. from Michal MazurekTed Unangst
2015-12-24More adress -> addressmmcc
2015-12-16Replace "tame" by "pledge" in a comment.tb
2015-12-06pledge "dpath" to allow creation of nodes via mkfifo(2) and mknod(2)Theo de Raadt
NOTE: dpath requires a fairly new kernel ok semarie
2015-12-06Use __progname instead of manually handling argv[0].Tobias Stoeckmann
ok deraadt, mmcc, tedu
2015-11-17int -> size_t for a len fieldmmcc
ok guenther@, deraadt@
2015-10-14Use a strict $PATH of "/usr/bin:/usr/local/bin" to run the (de)compressorsTheo de Raadt
(gzip, compress, bzip2) rather than following the user's path. This seems easier than hardcoding the paths elsewhere and using basename(). pax/tar is pledged itself, but it can spawn one of these programs if asked. The three found at the strict path use pledge "stdio" very early during startup, providing a warm fuzzy pledge->exec->no-pledge->pledge interlock. For bzip2, this assumes use of the ports/packages version installed to /usr/local/bin, which has been pledged by sthen@. Doing a 'tar tvfz hostile.tgz' becomes a bit safer, since an attacker finding a buffer overflow or use after free has significantly fewer system calls available (only pledge "stdio" in the decompressor). ok millert sthen
2015-10-12reenable pledge(2) on pax, but only if pmode isn't in use or if actionSebastien Marie
shouldn't do things with filesystem. ok deraadt@ millert@
2015-10-12Revert the pledge() call on pax/ar_io.c for now.Sebastien Marie
A pledged program is not allowed to change user/group for others. "I think that makes the most sense" @sthen
2015-10-12preservation modes can adjust setugid bits, so no pledge is possible.Theo de Raadt
Otherwise, lay the groundwork for whether a gzip program may be run or not. After such a gzip program is started, pledge the program will not exec again. Took a few iterations to get this going... it is looking good. with guenther.
2015-09-13Describe tar's -p option correctlyPhilip Guenther
noted by trondd(at)kagu-tsuchi.com ok deraadt@
2015-05-18Make TAPE=- mean stdout in tarczarkoff
Some scripts and GUI ssh clients assume that tar writes to standard output by default. This changes allows enforcing such behavior by setting TAPE="-" in user profile. Also, this makes parsing argument to "-f" option and contents of TAPE environment variable consistent. OK guenther@, jmc@ and sthen@
2015-04-18Convert many atoi() calls to strtonum(), adding range checks and failureTheo de Raadt
handling along the way. Reviews by Brendan MacDonell, Jeremy Devenport, florian, doug, millert
2015-03-22rev 1.44 accidentally changed ar_close() to give cpio the same output as pax.Philip Guenther
Adjust the conditions to correct that. ok millert@
2015-03-19Use struct timespec internally. This gives nanosecond precision to pax -rwPhilip Guenther
and a basis for support of mtime and atime values in pax-format extended header records. ok millert@
2015-03-17Add PAX_IS_{REG,HARDLINK,LINK} macros to simply many file type testsPhilip Guenther
ok millert@
2015-03-15Define chdname once in a .c and make it extern in the .hPhilip Guenther
2015-03-15Handle tar -o by setting the tar_nodir directly instead of faking up aPhilip Guenther
pax-like -o write_opt=nodir. ok millert@ otto@
2015-03-15Using O_TRUNC with O_CREAT|O_EXCL is just confusing: fail if it exists,Philip Guenther
but if you *did* succeed anyway, truncate it?
2015-03-15pax -o only accepts 'write_opt=nodir' and not bare 'nodir'Philip Guenther
2015-03-15tzfile.h is an internal header that should never have been installed.Todd C. Miller
What's worse, the tzfile.h that gets installed is over 20 years old and doesn't match the real tzfile.h in libc/time. This makes the tree safe for /usr/include/tzfile.h removal. The TM_YEAR_BASE define has been moved to time.h temporarily until its usage is replaced by 1900 in the tree. Actual removal of tzfile.h is pending a ports build. Based on a diff from deraadt@
2015-03-12If an archive isn't a recognized type, then check whether it looksPhilip Guenther
like compress, gzip, bzip2, or xz output. If so then error out with a useful message directing the user to the correct option and error out instead of scanning forward for an embedded tar/cpio header. wording help from sobrado@ ok millert@ deraadt@
2015-03-09Fix comment grammarPhilip Guenther
2015-03-09Unrevert post-unlock:Philip Guenther
* Prevent an archive from esacaping the current directory by itself: when extracting a symlink whose value is absolute or contains ".." components, just create a zero-length normal file (with additional tracking of the mode and hardlinks to the symlink) until everything else is extracted, then go back and replace it with the requested link (if it's still that zero-length placeholder). * For tar without -P, if a path in the archive has any ".." components then strip everything up to and including the last of them (if it ends in ".." then it becomes ".") This mostly follows GNU tar's behavior, except for 'tar tf' and 'tar xvf' we report the modified path that would be/was actually created instead of the raw path from the archive Above two fixes prompted by a report from Daniel Cegielka (daniel.cegielka (at) gmail.com) * For directories whose times or mode will be fixed up in the clean-up pass, record their dev+ino and then use open(O_DIRECTORY)+fstat() to verify that we're updating the correct directory before using futimens() and fchmod(). * Correct buffer overflow in handling of pax extension headers, caught by the memcpy() overlap check. previously ok millert@ deraadt@
2015-02-21Recent changes haven't been completely stable, so revert for the 5.7 releasePhilip Guenther
requested by deraadt@
2015-02-15Fix two bugs. The first affected tar files with the sameTodd C. Miller
directory listed twice with nothing created inside the directory in between the two instances of the directory. The other fixes extracting symlinks when the -C option is used. From guenther@ OK krw@