summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/libarchive/libarchive/0001-Patch-from-upstream-revision-1990.patch
diff options
context:
space:
mode:
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.patch42
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 @@
1libarchive: Backport patch from upstream (revision 1990)
2
3Upstream-Status: Backport
4
5Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
6
7diff --git a/libarchive/archive_read_disk_entry_from_file.c b/libarchive/archive_read_disk_entry_from_file.c
8index 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--
411.7.1
42