diff options
Diffstat (limited to 'meta/recipes-devtools/file/file/CVE-2019-8905_CVE-2019-8907.patch')
-rw-r--r-- | meta/recipes-devtools/file/file/CVE-2019-8905_CVE-2019-8907.patch | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/meta/recipes-devtools/file/file/CVE-2019-8905_CVE-2019-8907.patch b/meta/recipes-devtools/file/file/CVE-2019-8905_CVE-2019-8907.patch new file mode 100644 index 0000000000..a55b94c61a --- /dev/null +++ b/meta/recipes-devtools/file/file/CVE-2019-8905_CVE-2019-8907.patch | |||
@@ -0,0 +1,120 @@ | |||
1 | From d65781527c8134a1202b2649695d48d5701ac60b Mon Sep 17 00:00:00 2001 | ||
2 | From: Christos Zoulas <christos@zoulas.com> | ||
3 | Date: Mon, 18 Feb 2019 17:46:56 +0000 | ||
4 | Subject: [PATCH] PR/62: spinpx: limit size of file_printable. | ||
5 | |||
6 | Upstream-Status: Backport | ||
7 | CVE: CVE-2019-8905 | ||
8 | CVE: CVE-2019-8907 | ||
9 | affects < 5.36 | ||
10 | |||
11 | Signed-off-by: Armin Kuster <akuster@mvista.com> | ||
12 | |||
13 | --- | ||
14 | src/file.h | 4 ++-- | ||
15 | src/funcs.c | 9 +++++---- | ||
16 | src/readelf.c | 7 ++++--- | ||
17 | src/softmagic.c | 14 ++++++++------ | ||
18 | 4 files changed, 19 insertions(+), 15 deletions(-) | ||
19 | |||
20 | Index: git/src/file.h | ||
21 | =================================================================== | ||
22 | --- git.orig/src/file.h | ||
23 | +++ git/src/file.h | ||
24 | @@ -501,7 +501,7 @@ protected int file_looks_utf8(const unsi | ||
25 | size_t *); | ||
26 | protected size_t file_pstring_length_size(const struct magic *); | ||
27 | protected size_t file_pstring_get_length(const struct magic *, const char *); | ||
28 | -protected char * file_printable(char *, size_t, const char *); | ||
29 | +protected char * file_printable(char *, size_t, const char *, size_t); | ||
30 | #ifdef __EMX__ | ||
31 | protected int file_os2_apptype(struct magic_set *, const char *, const void *, | ||
32 | size_t); | ||
33 | Index: git/src/funcs.c | ||
34 | =================================================================== | ||
35 | --- git.orig/src/funcs.c | ||
36 | +++ git/src/funcs.c | ||
37 | @@ -595,12 +595,13 @@ file_pop_buffer(struct magic_set *ms, fi | ||
38 | * convert string to ascii printable format. | ||
39 | */ | ||
40 | protected char * | ||
41 | -file_printable(char *buf, size_t bufsiz, const char *str) | ||
42 | +file_printable(char *buf, size_t bufsiz, const char *str, size_t slen) | ||
43 | { | ||
44 | - char *ptr, *eptr; | ||
45 | + char *ptr, *eptr = buf + bufsiz - 1; | ||
46 | const unsigned char *s = (const unsigned char *)str; | ||
47 | + const unsigned char *es = s + slen; | ||
48 | |||
49 | - for (ptr = buf, eptr = ptr + bufsiz - 1; ptr < eptr && *s; s++) { | ||
50 | + for (ptr = buf; ptr < eptr && s < es && *s; s++) { | ||
51 | if (isprint(*s)) { | ||
52 | *ptr++ = *s; | ||
53 | continue; | ||
54 | Index: git/src/readelf.c | ||
55 | =================================================================== | ||
56 | --- git.orig/src/readelf.c | ||
57 | +++ git/src/readelf.c | ||
58 | @@ -750,7 +750,7 @@ do_core_note(struct magic_set *ms, unsig | ||
59 | if (file_printf(ms, ", from '%.31s', pid=%u, uid=%u, " | ||
60 | "gid=%u, nlwps=%u, lwp=%u (signal %u/code %u)", | ||
61 | file_printable(sbuf, sizeof(sbuf), | ||
62 | - CAST(char *, pi.cpi_name)), | ||
63 | + CAST(char *, pi.cpi_name), sizeof(pi.cpi_name)), | ||
64 | elf_getu32(swap, (uint32_t)pi.cpi_pid), | ||
65 | elf_getu32(swap, pi.cpi_euid), | ||
66 | elf_getu32(swap, pi.cpi_egid), | ||
67 | @@ -1655,7 +1655,8 @@ dophn_exec(struct magic_set *ms, int cla | ||
68 | return -1; | ||
69 | if (interp[0]) | ||
70 | if (file_printf(ms, ", interpreter %s", | ||
71 | - file_printable(ibuf, sizeof(ibuf), interp)) == -1) | ||
72 | + file_printable(ibuf, sizeof(ibuf), interp, sizeof(interp))) | ||
73 | + == -1) | ||
74 | return -1; | ||
75 | return 0; | ||
76 | } | ||
77 | Index: git/src/softmagic.c | ||
78 | =================================================================== | ||
79 | --- git.orig/src/softmagic.c | ||
80 | +++ git/src/softmagic.c | ||
81 | @@ -616,8 +616,8 @@ mprint(struct magic_set *ms, struct magi | ||
82 | case FILE_LESTRING16: | ||
83 | if (m->reln == '=' || m->reln == '!') { | ||
84 | if (file_printf(ms, F(ms, desc, "%s"), | ||
85 | - file_printable(sbuf, sizeof(sbuf), m->value.s)) | ||
86 | - == -1) | ||
87 | + file_printable(sbuf, sizeof(sbuf), m->value.s, | ||
88 | + sizeof(m->value.s))) == -1) | ||
89 | return -1; | ||
90 | t = ms->offset + m->vallen; | ||
91 | } | ||
92 | @@ -644,7 +644,8 @@ mprint(struct magic_set *ms, struct magi | ||
93 | } | ||
94 | |||
95 | if (file_printf(ms, F(ms, desc, "%s"), | ||
96 | - file_printable(sbuf, sizeof(sbuf), str)) == -1) | ||
97 | + file_printable(sbuf, sizeof(sbuf), str, | ||
98 | + sizeof(p->s) - (str - p->s))) == -1) | ||
99 | return -1; | ||
100 | |||
101 | if (m->type == FILE_PSTRING) | ||
102 | @@ -750,7 +751,7 @@ mprint(struct magic_set *ms, struct magi | ||
103 | return -1; | ||
104 | } | ||
105 | rval = file_printf(ms, F(ms, desc, "%s"), | ||
106 | - file_printable(sbuf, sizeof(sbuf), cp)); | ||
107 | + file_printable(sbuf, sizeof(sbuf), cp, ms->search.rm_len)); | ||
108 | free(cp); | ||
109 | |||
110 | if (rval == -1) | ||
111 | @@ -777,7 +778,8 @@ mprint(struct magic_set *ms, struct magi | ||
112 | break; | ||
113 | case FILE_DER: | ||
114 | if (file_printf(ms, F(ms, desc, "%s"), | ||
115 | - file_printable(sbuf, sizeof(sbuf), ms->ms_value.s)) == -1) | ||
116 | + file_printable(sbuf, sizeof(sbuf), ms->ms_value.s, | ||
117 | + sizeof(ms->ms_value.s))) == -1) | ||
118 | return -1; | ||
119 | t = ms->offset; | ||
120 | break; | ||