Commit 1ff0b63f4898 "Accept only position-sensitive (file-selection)
options in file list files" has introduced a pointer indirection
bug that breaks TAR_OPTIONS parsing.
The problem shows up when running the test suite on FreeBSD 12.2
where it can be simplified to this reproducer:
$ export
TAR_OPTIONS='--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=mtime,delete=atime,delete=ctime'
$ tar
Segmentation fault (core dumped)
Here's the fix:
--- src/tar.c.orig 2021-01-17 15:26:53 UTC
+++ src/tar.c
@@ -2248,7 +2248,7 @@ parse_default_options (struct tar_args *args)
if (argp_parse (&argp,
ws.ws_offs + ws.ws_wordc,
ws.ws_wordv,
- ARGP_IN_ORDER|ARGP_NO_EXIT, &idx, &args))
+ ARGP_IN_ORDER|ARGP_NO_EXIT, &idx, args))
abort (); /* shouldn't happen */
args->loc = save_loc_ptr;
if (name_more_files ())
--
Christian "naddy" Weisgerber [email protected]