mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 21:05:08 +00:00
libarchive: merge vendor bugfixes
Bugfixes: IS #1672 and OSS-Fuzz #38766: (zip reader) fix possible out-of-bounds read in zipx_lzma_alone_init() PR #1676: (mtree reader) remove the unused variable "detected_bytes" PR #1674: (doc) fix use of At mdoc(7) macro in cpio.5 MFC after: 3 days
This commit is contained in:
commit
0c9c2eb394
|
@ -109,6 +109,11 @@ __FBSDID("$FreeBSD$");
|
|||
#define O_CLOEXEC 0
|
||||
#endif
|
||||
|
||||
#if defined(__hpux) && !defined(HAVE_DIRFD)
|
||||
#define dirfd(x) ((x)->__dd_fd)
|
||||
#define HAVE_DIRFD
|
||||
#endif
|
||||
|
||||
/*-
|
||||
* This is a new directory-walking system that addresses a number
|
||||
* of problems I've had with fts(3). In particular, it has no
|
||||
|
@ -2428,7 +2433,7 @@ tree_dir_next_posix(struct tree *t)
|
|||
#else /* HAVE_FDOPENDIR */
|
||||
if (tree_enter_working_dir(t) == 0) {
|
||||
t->d = opendir(".");
|
||||
#if HAVE_DIRFD || defined(dirfd)
|
||||
#ifdef HAVE_DIRFD
|
||||
__archive_ensure_cloexec_flag(dirfd(t->d));
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -692,7 +692,7 @@ detect_form(struct archive_read *a, int *is_form_d)
|
|||
{
|
||||
const char *p;
|
||||
ssize_t avail, ravail;
|
||||
ssize_t detected_bytes = 0, len, nl;
|
||||
ssize_t len, nl;
|
||||
int entry_cnt = 0, multiline = 0;
|
||||
int form_D = 0;/* The archive is generated by `NetBSD mtree -D'
|
||||
* (In this source we call it `form D') . */
|
||||
|
@ -728,8 +728,6 @@ detect_form(struct archive_read *a, int *is_form_d)
|
|||
* character of previous line was '\' character. */
|
||||
if (bid_keyword_list(p, len, 0, 0) <= 0)
|
||||
break;
|
||||
if (multiline == 1)
|
||||
detected_bytes += len;
|
||||
if (p[len-nl-1] != '\\') {
|
||||
if (multiline == 1 &&
|
||||
++entry_cnt >= MAX_BID_ENTRY)
|
||||
|
@ -745,7 +743,6 @@ detect_form(struct archive_read *a, int *is_form_d)
|
|||
|
||||
keywords = bid_entry(p, len, nl, &last_is_path);
|
||||
if (keywords >= 0) {
|
||||
detected_bytes += len;
|
||||
if (form_D == 0) {
|
||||
if (last_is_path)
|
||||
form_D = 1;
|
||||
|
|
|
@ -1667,7 +1667,7 @@ zipx_lzma_alone_init(struct archive_read *a, struct zip *zip)
|
|||
*/
|
||||
|
||||
/* Read magic1,magic2,lzma_params from the ZIPX stream. */
|
||||
if((p = __archive_read_ahead(a, 9, NULL)) == NULL) {
|
||||
if(zip->entry_bytes_remaining < 9 || (p = __archive_read_ahead(a, 9, NULL)) == NULL) {
|
||||
archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
|
||||
"Truncated lzma data");
|
||||
return (ARCHIVE_FATAL);
|
||||
|
|
|
@ -354,7 +354,7 @@ while working in AT&T's Unix Support Group.
|
|||
It appeared in 1977 as part of PWB/UNIX 1.0, the
|
||||
.Dq Programmer's Work Bench
|
||||
derived from
|
||||
.At 6th Edition UNIX
|
||||
.At v6
|
||||
that was used internally at AT&T.
|
||||
Both the new binary and old character formats were in use
|
||||
by 1980, according to the System III source released
|
||||
|
|
|
@ -98,6 +98,7 @@
|
|||
#define HAVE_DECL_UINT64_MAX 1
|
||||
#define HAVE_DECL_UINTMAX_MAX 1
|
||||
#define HAVE_DIRENT_H 1
|
||||
#define HAVE_DIRFD 1
|
||||
#define HAVE_DLFCN_H 1
|
||||
#define HAVE_D_MD_ORDER 1
|
||||
#define HAVE_EFTYPE 1
|
||||
|
|
Loading…
Reference in a new issue