diff options
author | Brad King <brad.king@kitware.com> | 2023-10-16 22:12:05 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-10-16 22:53:19 (GMT) |
commit | c4fec0edd6e4cf9f3ab4257ac20c26c026e5d8ee (patch) | |
tree | 0dd8c6224bafeeacb46d731a6c08c97638b5411d /Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c | |
parent | 1cc25f22ff5093d0e87899b75bd158b30717ad97 (diff) | |
parent | 939e164ee54434683c948dd4b1f6fa47ccfae894 (diff) | |
download | CMake-c4fec0edd6e4cf9f3ab4257ac20c26c026e5d8ee.zip CMake-c4fec0edd6e4cf9f3ab4257ac20c26c026e5d8ee.tar.gz CMake-c4fec0edd6e4cf9f3ab4257ac20c26c026e5d8ee.tar.bz2 |
Merge branch 'upstream-LibArchive' into update-libarchive
* upstream-LibArchive:
LibArchive 2023-09-12 (6468cd1f)
Diffstat (limited to 'Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c')
-rw-r--r-- | Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c b/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c index c964d3f..ab5306d 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c @@ -1678,6 +1678,11 @@ setup_current_filesystem(struct archive_read_disk *a) else t->current_filesystem->name_max = nm; #endif + if (t->current_filesystem->name_max == 0) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Cannot determine name_max"); + return (ARCHIVE_FAILED); + } #endif /* USE_READDIR_R */ return (ARCHIVE_OK); } @@ -1868,8 +1873,17 @@ setup_current_filesystem(struct archive_read_disk *a) #if defined(USE_READDIR_R) /* Set maximum filename length. */ +#if defined(HAVE_STATVFS) + t->current_filesystem->name_max = svfs.f_namemax; +#else t->current_filesystem->name_max = sfs.f_namelen; #endif + if (t->current_filesystem->name_max == 0) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Cannot determine name_max"); + return (ARCHIVE_FAILED); + } +#endif return (ARCHIVE_OK); } @@ -1950,6 +1964,11 @@ setup_current_filesystem(struct archive_read_disk *a) #if defined(USE_READDIR_R) /* Set maximum filename length. */ t->current_filesystem->name_max = svfs.f_namemax; + if (t->current_filesystem->name_max == 0) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Cannot determine name_max"); + return (ARCHIVE_FAILED); + } #endif return (ARCHIVE_OK); } @@ -2004,6 +2023,11 @@ setup_current_filesystem(struct archive_read_disk *a) else t->current_filesystem->name_max = nm; # endif /* _PC_NAME_MAX */ + if (t->current_filesystem->name_max == 0) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Cannot determine name_max"); + return (ARCHIVE_FAILED); + } #endif /* USE_READDIR_R */ return (ARCHIVE_OK); } @@ -2554,7 +2578,11 @@ tree_current_lstat(struct tree *t) #else if (tree_enter_working_dir(t) != 0) return NULL; +#ifdef HAVE_LSTAT if (lstat(tree_current_access_path(t), &t->lst) != 0) +#else + if (la_stat(tree_current_access_path(t), &t->lst) != 0) +#endif #endif return NULL; t->flags |= hasLstat; |