Change-Id: I027e418a0be95a17e356c9b10388f5e5eb7619e7
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/6087
Reviewed-by: Sharath George
Tested-by: gerrit-photon <photon-checkins@vmware.com>
1 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,81 @@ |
0 |
+ |
|
1 |
+m fccef3cc822af74699cca84cd202719ae61ca3b9 Mon Sep 17 00:00:00 2001 |
|
2 |
+From: Philip Withnall <withnall@endlessm.com> |
|
3 |
+Date: Mon, 30 Jul 2018 18:33:39 +0100 |
|
4 |
+Subject: [PATCH] gmarkup: Fix crash in error handling path for closing |
|
5 |
+ elements |
|
6 |
+MIME-Version: 1.0 |
|
7 |
+Content-Type: text/plain; charset=UTF-8 |
|
8 |
+Content-Transfer-Encoding: 8bit |
|
9 |
+ |
|
10 |
+If something which looks like a closing tag is left unfinished, but |
|
11 |
+isn’t paired to an opening tag in the document, the error handling code |
|
12 |
+would do a null pointer dereference. Avoid that, at the cost of |
|
13 |
+introducing a new translatable error message. |
|
14 |
+ |
|
15 |
+Includes a test case, courtesy of pdknsk. |
|
16 |
+ |
|
17 |
+Signed-off-by: Philip Withnall <withnall@endlessm.com> |
|
18 |
+ |
|
19 |
+https://gitlab.gnome.org/GNOME/glib/issues/1461 |
|
20 |
+--- |
|
21 |
+glib/gmarkup.c | 11 ++++++++--- |
|
22 |
+ glib/tests/Makefile.am | 2 +- |
|
23 |
+ glib/tests/markups/fail-51.expected | 1 + |
|
24 |
+ glib/tests/markups/fail-51.gmarkup | 1 + |
|
25 |
+ 4 files changed, 11 insertions(+), 4 deletions(-) |
|
26 |
+ create mode 100644 glib/tests/markups/fail-51.expected |
|
27 |
+ create mode 100644 glib/tests/markups/fail-51.gmarkup |
|
28 |
+ |
|
29 |
+diff --git a/glib/gmarkup.c b/glib/gmarkup.c |
|
30 |
+index ed30ed2..a159d7b 100644 |
|
31 |
+--- a/glib/gmarkup.c |
|
32 |
+@@ -1832,9 +1832,14 @@ g_markup_parse_context_end_parse (GMarkupParseContext *context, |
|
33 |
+ case STATE_AFTER_CLOSE_TAG_SLASH: |
|
34 |
+ case STATE_INSIDE_CLOSE_TAG_NAME: |
|
35 |
+ case STATE_AFTER_CLOSE_TAG_NAME: |
|
36 |
+- set_error (context, error, G_MARKUP_ERROR_PARSE, |
|
37 |
+- _("Document ended unexpectedly inside the close tag for " |
|
38 |
+- "element '%s'"), current_element (context)); |
|
39 |
++ if (context->tag_stack != NULL) |
|
40 |
++ set_error (context, error, G_MARKUP_ERROR_PARSE, |
|
41 |
++ _("Document ended unexpectedly inside the close tag for " |
|
42 |
++ "element '%s'"), current_element (context)); |
|
43 |
++ else |
|
44 |
++ set_error (context, error, G_MARKUP_ERROR_PARSE, |
|
45 |
++ _("Document ended unexpectedly inside the close tag for an " |
|
46 |
++ "unopened element")); |
|
47 |
+ break; |
|
48 |
+ |
|
49 |
+ case STATE_INSIDE_PASSTHROUGH: |
|
50 |
+diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am |
|
51 |
+index b3983d3..a690064 100644 |
|
52 |
+--- a/glib/tests/Makefile.am |
|
53 |
+@@ -155,7 +155,7 @@ markup_tests = \ |
|
54 |
+ fail-31 fail-32 fail-33 fail-34 fail-35 \ |
|
55 |
+ fail-36 fail-37 fail-38 fail-39 fail-40 \ |
|
56 |
+ fail-41 fail-42 fail-43 fail-44 fail-45 \ |
|
57 |
+- fail-46 fail-47 fail-48 fail-49 \ |
|
58 |
++ fail-46 fail-47 fail-48 fail-49 fail-51 \ |
|
59 |
+ valid-1 valid-2 valid-3 valid-4 valid-5 \ |
|
60 |
+ valid-6 valid-7 valid-8 valid-9 valid-10 \ |
|
61 |
+ valid-11 valid-12 valid-13 valid-14 valid-15 \ |
|
62 |
+diff --git a/glib/tests/markups/fail-51.expected b/glib/tests/markups/fail-51.expected |
|
63 |
+new file mode 100644 |
|
64 |
+index 0000000..1c7e8d4 |
|
65 |
+--- /dev/null |
|
66 |
+@@ -0,0 +1 @@ |
|
67 |
++ERROR Error on line 1 char 5: Document ended unexpectedly inside the close tag for an unopened element |
|
68 |
+diff --git a/glib/tests/markups/fail-51.gmarkup b/glib/tests/markups/fail-51.gmarkup |
|
69 |
+new file mode 100644 |
|
70 |
+index 0000000..860e1e6 |
|
71 |
+--- /dev/null |
|
72 |
+@@ -0,0 +1 @@ |
|
73 |
++</0< |
|
74 |
+\ No newline at end of file |
|
75 |
+-- |
|
76 |
+2.7.4 |
0 | 77 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,87 @@ |
0 |
+From cec71705406f0b2790422f0c1aa0ff3b4b464b1b Mon Sep 17 00:00:00 2001 |
|
1 |
+From: Philip Withnall <withnall@endlessm.com> |
|
2 |
+Date: Mon, 30 Jul 2018 18:10:25 +0100 |
|
3 |
+Subject: [PATCH] gmarkup: Fix unvalidated UTF-8 read in markup parsing error |
|
4 |
+ paths |
|
5 |
+MIME-Version: 1.0 |
|
6 |
+Content-Type: text/plain; charset=UTF-8 |
|
7 |
+Content-Transfer-Encoding: 8bit |
|
8 |
+ |
|
9 |
+When formatting the error messages for markup parsing errors, the parser |
|
10 |
+was unconditionally reading a UTF-8 character from the input buffer — |
|
11 |
+but the buffer might end with a partial code sequence, resulting in |
|
12 |
+reading off the end of the buffer by up to three bytes. |
|
13 |
+ |
|
14 |
+Fix this and add a test case, courtesy of pdknsk. |
|
15 |
+ |
|
16 |
+Signed-off-by: Philip Withnall <withnall@endlessm.com> |
|
17 |
+ |
|
18 |
+--- |
|
19 |
+ glib/gmarkup.c | 14 +++++++++++++- |
|
20 |
+ glib/tests/Makefile.am | 3 ++- |
|
21 |
+ glib/tests/markups/fail-50.expected | 1 + |
|
22 |
+ glib/tests/markups/fail-50.gmarkup | 1 + |
|
23 |
+ 4 files changed, 17 insertions(+), 2 deletions(-) |
|
24 |
+ create mode 100644 glib/tests/markups/fail-50.expected |
|
25 |
+ create mode 100644 glib/tests/markups/fail-50.gmarkup |
|
26 |
+ |
|
27 |
+diff --git a/glib/gmarkup.c b/glib/gmarkup.c |
|
28 |
+index a159d7b..a2b1ed0 100644 |
|
29 |
+--- a/glib/gmarkup.c |
|
30 |
+@@ -557,11 +557,23 @@ char_str (gunichar c, |
|
31 |
+ return buf; |
|
32 |
+ } |
|
33 |
+ |
|
34 |
++/* Format the next UTF-8 character as a gchar* for printing in error output |
|
35 |
++ * when we encounter a syntax error. This correctly handles invalid UTF-8, |
|
36 |
++ * emitting it as hex escapes. */ |
|
37 |
+ static gchar* |
|
38 |
+ utf8_str (const gchar *utf8, |
|
39 |
+ gchar *buf) |
|
40 |
+ { |
|
41 |
+- char_str (g_utf8_get_char (utf8), buf); |
|
42 |
++ gunichar c = g_utf8_get_char_validated (utf8, -1); |
|
43 |
++ if (c == (gunichar) -1 || c == (gunichar) -2) |
|
44 |
++ { |
|
45 |
++ gchar *temp = g_strdup_printf ("\\x%02x", (guint)(guchar)*utf8); |
|
46 |
++ memset (buf, 0, 8); |
|
47 |
++ memcpy (buf, temp, strlen (temp)); |
|
48 |
++ g_free (temp); |
|
49 |
++ } |
|
50 |
++ else |
|
51 |
++ char_str (c, buf); |
|
52 |
+ return buf; |
|
53 |
+ } |
|
54 |
+ |
|
55 |
+diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am |
|
56 |
+index a690064..4c8028b 100644 |
|
57 |
+--- a/glib/tests/Makefile.am |
|
58 |
+@@ -155,7 +155,8 @@ markup_tests = \ |
|
59 |
+ fail-31 fail-32 fail-33 fail-34 fail-35 \ |
|
60 |
+ fail-36 fail-37 fail-38 fail-39 fail-40 \ |
|
61 |
+ fail-41 fail-42 fail-43 fail-44 fail-45 \ |
|
62 |
+- fail-46 fail-47 fail-48 fail-49 fail-51 \ |
|
63 |
++ fail-46 fail-47 fail-48 fail-49 fail-50 \ |
|
64 |
++ fail-51 \ |
|
65 |
+ valid-1 valid-2 valid-3 valid-4 valid-5 \ |
|
66 |
+ valid-6 valid-7 valid-8 valid-9 valid-10 \ |
|
67 |
+ valid-11 valid-12 valid-13 valid-14 valid-15 \ |
|
68 |
+diff --git a/glib/tests/markups/fail-50.expected b/glib/tests/markups/fail-50.expected |
|
69 |
+new file mode 100644 |
|
70 |
+index 0000000..70d4498 |
|
71 |
+--- /dev/null |
|
72 |
+@@ -0,0 +1 @@ |
|
73 |
++ERROR Error on line 1 char 5: Odd character '\xfc', expected an open quote mark after the equals sign when giving value for attribute 'r' of element '' |
|
74 |
+diff --git a/glib/tests/markups/fail-50.gmarkup b/glib/tests/markups/fail-50.gmarkup |
|
75 |
+new file mode 100644 |
|
76 |
+index 0000000..f110f15 |
|
77 |
+--- /dev/null |
|
78 |
+@@ -0,0 +1 @@ |
|
79 |
++< r=� |
|
80 |
+\ No newline at end of file |
|
81 |
+-- |
|
82 |
+2.7.4 |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
Summary: Low-level libraries useful for providing data structure handling for C. |
2 | 2 |
Name: glib |
3 | 3 |
Version: 2.52.1 |
4 |
-Release: 2%{?dist} |
|
4 |
+Release: 3%{?dist} |
|
5 | 5 |
License: LGPLv2+ |
6 | 6 |
URL: https://developer.gnome.org/glib/ |
7 | 7 |
Group: Applications/System |
... | ... |
@@ -9,6 +9,8 @@ Vendor: VMware, Inc. |
9 | 9 |
Distribution: Photon |
10 | 10 |
Source0: http://ftp.gnome.org/pub/gnome/sources/glib/2.52/%{name}-%{version}.tar.xz |
11 | 11 |
%define sha1 glib=ae55d5a476e7e9c08f06e22e9a723e4d0313a873 |
12 |
+Patch0: glib-CVE-2018-16428.patch |
|
13 |
+Patch1: glib-CVE-2018-16429.patch |
|
12 | 14 |
BuildRequires: pcre-devel |
13 | 15 |
BuildRequires: libffi-devel |
14 | 16 |
BuildRequires: pkg-config |
... | ... |
@@ -48,6 +50,8 @@ Gsettings schemas compiling tool |
48 | 48 |
|
49 | 49 |
%prep |
50 | 50 |
%setup -q |
51 |
+%patch0 -p1 |
|
52 |
+%patch1 -p1 |
|
51 | 53 |
%build |
52 | 54 |
./configure --prefix=/usr --with-pcre=system |
53 | 55 |
make %{?_smp_mflags} |
... | ... |
@@ -86,6 +90,8 @@ make DESTDIR=%{buildroot} install |
86 | 86 |
%{_datadir}/glib-2.0/schemas/* |
87 | 87 |
|
88 | 88 |
%changelog |
89 |
+* Fri Nov 02 2018 Keerthana K <keerthanak@vmware.com> 2.52.1-3 |
|
90 |
+- Fix for CVE-2018-16428 and CVE-2018-16429. |
|
89 | 91 |
* Fri Apr 14 2017 Alexey Makhalov <amakhalov@vmware.com> 2.52.1-2 |
90 | 92 |
- Requires pcre-libs, BuildRequires libffi-devel. |
91 | 93 |
* Wed Apr 12 2017 Danut Moraru <dmoraru@vmware.com> 2.52.1-1 |