1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-03 22:56:33 +02:00

gpgtar: List and extract using extended headers.

* tools/gpgtar.h (TF_EXTHDR, TF_GEXTHDR): New.
* tools/gpgtar-list.c (parse_header): Set the new type flags.
(parse_extended_header): New.
(read_header): Add arg r_extheader and parse extended header.
(print_header): Consult the extended header.
(gpgtar_list): Pass an extended header object.
(gpgtar_read_header): Ditto.
(gpgtar_print_header): Ditto.
* tools/gpgtar-extract.c (extract): New arg exthdr and factor name
checking out to ...
(check_suspicious_name): new.
(extract_regular): Add arg exthdr and consult it.
(extract_directory): Likewise.
(gpgtar_extract): Provide extheader object.
--

GnuPG-bug-id: 5754
This commit is contained in:
Werner Koch 2022-01-09 18:34:04 +01:00
parent 3a1c556b2c
commit 99a8b1f138
No known key found for this signature in database
GPG key ID: E3FDFF218E45B72B
4 changed files with 272 additions and 62 deletions

View file

@ -95,6 +95,8 @@ typedef enum
TF_DIRECTORY,
TF_FIFO,
TF_RESERVED,
TF_GEXTHDR, /* Global extended header. */
TF_EXTHDR, /* Extended header. */
TF_UNKNOWN, /* Needs to be treated as regular file. */
TF_NOTSUP /* Not supported (used with --create). */
} typeflag_t;
@ -140,8 +142,9 @@ gpg_error_t gpgtar_extract (const char *filename, int decrypt);
/*-- gpgtar-list.c --*/
gpg_error_t gpgtar_list (const char *filename, int decrypt);
gpg_error_t gpgtar_read_header (estream_t stream, tarinfo_t info,
tar_header_t *r_header);
void gpgtar_print_header (tar_header_t header, estream_t out);
tar_header_t *r_header, strlist_t *r_extheader);
void gpgtar_print_header (tar_header_t header, strlist_t extheader,
estream_t out);
#endif /*GPGTAR_H*/