summaryrefslogtreecommitdiff
path: root/libarchive
diff options
context:
space:
mode:
authorMartin Matuška <martin@matuska.org>2022-11-02 09:53:46 +0100
committerGitHub <noreply@github.com>2022-11-02 09:53:46 +0100
commit410ecbd3a7cb3f8d72f61428db1141baaed2919d (patch)
treeac38e811f2a33ce43eb19dc22c588e01675f47e8 /libarchive
parent356b0892112b80697bd48e05f3efcee41baf9b46 (diff)
parent8e0d0f36b197074614281643c691b27e4b43150e (diff)
downloadlibarchive-410ecbd3a7cb3f8d72f61428db1141baaed2919d.tar.gz
Merge pull request #1786 from Malterlib/oob-windows-symlinks
Fix Windows symlink checks can reads past end of string
Diffstat (limited to 'libarchive')
-rw-r--r--libarchive/archive_write_disk_posix.c2
-rw-r--r--libarchive/archive_write_disk_windows.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/libarchive/archive_write_disk_posix.c b/libarchive/archive_write_disk_posix.c
index dd7eb9a5..4793878b 100644
--- a/libarchive/archive_write_disk_posix.c
+++ b/libarchive/archive_write_disk_posix.c
@@ -1996,6 +1996,8 @@ archive_write_disk_new(void)
free(a);
return (NULL);
}
+ a->path_safe.s[0] = 0;
+
#ifdef HAVE_ZLIB_H
a->decmpfs_compression_level = 5;
#endif
diff --git a/libarchive/archive_write_disk_windows.c b/libarchive/archive_write_disk_windows.c
index 1b12a299..5474de16 100644
--- a/libarchive/archive_write_disk_windows.c
+++ b/libarchive/archive_write_disk_windows.c
@@ -1370,6 +1370,7 @@ archive_write_disk_new(void)
free(a);
return (NULL);
}
+ a->path_safe.s[0] = 0;
return (&a->archive);
}
@@ -2154,6 +2155,8 @@ check_symlinks(struct archive_write_disk *a)
return (ARCHIVE_FAILED);
}
}
+ if (!c)
+ break;
pn[0] = c;
pn++;
}