diff options
Diffstat (limited to 'meta/recipes-extended/libarchive/libarchive/0001-Patch-from-upstream-revision-1990.patch')
-rw-r--r-- | meta/recipes-extended/libarchive/libarchive/0001-Patch-from-upstream-revision-1990.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/meta/recipes-extended/libarchive/libarchive/0001-Patch-from-upstream-revision-1990.patch b/meta/recipes-extended/libarchive/libarchive/0001-Patch-from-upstream-revision-1990.patch new file mode 100644 index 0000000000..f65f89f46b --- /dev/null +++ b/meta/recipes-extended/libarchive/libarchive/0001-Patch-from-upstream-revision-1990.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | libarchive: Backport patch from upstream (revision 1990) | ||
2 | |||
3 | Upstream-Status: Backport | ||
4 | |||
5 | Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> | ||
6 | |||
7 | diff --git a/libarchive/archive_read_disk_entry_from_file.c b/libarchive/archive_read_disk_entry_from_file.c | ||
8 | index 7473c50..27671df 100644 | ||
9 | --- a/libarchive/archive_read_disk_entry_from_file.c | ||
10 | +++ b/libarchive/archive_read_disk_entry_from_file.c | ||
11 | @@ -163,15 +163,26 @@ archive_read_disk_entry_from_file(struct archive *_a, | ||
12 | |||
13 | #ifdef HAVE_READLINK | ||
14 | if (S_ISLNK(st->st_mode)) { | ||
15 | - char linkbuffer[PATH_MAX + 1]; | ||
16 | - int lnklen = readlink(path, linkbuffer, PATH_MAX); | ||
17 | + size_t linkbuffer_len = st->st_size + 1; | ||
18 | + char *linkbuffer; | ||
19 | + int lnklen; | ||
20 | + | ||
21 | + linkbuffer = malloc(linkbuffer_len); | ||
22 | + if (linkbuffer == NULL) { | ||
23 | + archive_set_error(&a->archive, ENOMEM, | ||
24 | + "Couldn't read link data"); | ||
25 | + return (ARCHIVE_FAILED); | ||
26 | + } | ||
27 | + lnklen = readlink(path, linkbuffer, linkbuffer_len); | ||
28 | if (lnklen < 0) { | ||
29 | archive_set_error(&a->archive, errno, | ||
30 | "Couldn't read link data"); | ||
31 | + free(linkbuffer); | ||
32 | return (ARCHIVE_FAILED); | ||
33 | } | ||
34 | linkbuffer[lnklen] = 0; | ||
35 | archive_entry_set_symlink(entry, linkbuffer); | ||
36 | + free(linkbuffer); | ||
37 | } | ||
38 | #endif | ||
39 | |||
40 | -- | ||
41 | 1.7.1 | ||
42 | |||