unzip: Fix segmentation fault if a zip file contains buggy filename.
PR: 259011
Reported by: Robert Morris
Submitted by: ak
(cherry picked from commit 2c614481fd
)
This commit is contained in:
parent
54a01b5326
commit
3bfe213143
@ -211,6 +211,9 @@ pathdup(const char *path)
|
||||
char *str;
|
||||
size_t i, len;
|
||||
|
||||
if (path == NULL || path[0] == '\0')
|
||||
return (NULL);
|
||||
|
||||
len = strlen(path);
|
||||
while (len && path[len - 1] == '/')
|
||||
len--;
|
||||
@ -697,7 +700,11 @@ extract(struct archive *a, struct archive_entry *e)
|
||||
mode_t filetype;
|
||||
char *p, *q;
|
||||
|
||||
pathname = pathdup(archive_entry_pathname(e));
|
||||
if ((pathname = pathdup(archive_entry_pathname(e))) == NULL) {
|
||||
warningx("skipping empty or unreadable filename entry");
|
||||
ac(archive_read_data_skip(a));
|
||||
return;
|
||||
}
|
||||
filetype = archive_entry_filetype(e);
|
||||
|
||||
/* sanity checks */
|
||||
@ -760,7 +767,11 @@ extract_stdout(struct archive *a, struct archive_entry *e)
|
||||
char *pathname;
|
||||
mode_t filetype;
|
||||
|
||||
pathname = pathdup(archive_entry_pathname(e));
|
||||
if ((pathname = pathdup(archive_entry_pathname(e))) == NULL) {
|
||||
warningx("skipping empty or unreadable filename entry");
|
||||
ac(archive_read_data_skip(a));
|
||||
return;
|
||||
}
|
||||
filetype = archive_entry_filetype(e);
|
||||
|
||||
/* I don't think this can happen in a zipfile.. */
|
||||
|
Loading…
Reference in New Issue
Block a user