diff options
Diffstat (limited to 'meta/recipes-core/glib-2.0/glib-2.0/CVE-2023-32665-0001.patch')
-rw-r--r-- | meta/recipes-core/glib-2.0/glib-2.0/CVE-2023-32665-0001.patch | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/CVE-2023-32665-0001.patch b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2023-32665-0001.patch new file mode 100644 index 0000000000..9fc58341cb --- /dev/null +++ b/meta/recipes-core/glib-2.0/glib-2.0/CVE-2023-32665-0001.patch | |||
@@ -0,0 +1,103 @@ | |||
1 | From 1deacdd4e8e35a5cf1417918ca4f6b0afa6409b1 Mon Sep 17 00:00:00 2001 | ||
2 | From: William Manley <will@stb-tester.com> | ||
3 | Date: Wed, 9 Aug 2023 10:04:49 +0000 | ||
4 | Subject: [PATCH] gvariant-core: Consolidate construction of | ||
5 | `GVariantSerialised` | ||
6 | |||
7 | So I only need to change it in one place. | ||
8 | |||
9 | This introduces no functional changes. | ||
10 | |||
11 | Helps: #2121 | ||
12 | |||
13 | CVE: CVE-2023-32665 | ||
14 | Upstream-Status: Backport from [https://gitlab.gnome.org/GNOME/glib/-/commit/1deacdd4e8e35a5cf1417918ca4f6b0afa6409b1] | ||
15 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
16 | --- | ||
17 | glib/gvariant-core.c | 49 ++++++++++++++++++++++---------------------- | ||
18 | 1 file changed, 25 insertions(+), 24 deletions(-) | ||
19 | |||
20 | diff --git a/glib/gvariant-core.c b/glib/gvariant-core.c | ||
21 | index 9397573..aa0e0a0 100644 | ||
22 | --- a/glib/gvariant-core.c | ||
23 | +++ b/glib/gvariant-core.c | ||
24 | @@ -349,6 +349,27 @@ g_variant_ensure_size (GVariant *value) | ||
25 | } | ||
26 | } | ||
27 | |||
28 | +/* < private > | ||
29 | + * g_variant_to_serialised: | ||
30 | + * @value: a #GVariant | ||
31 | + * | ||
32 | + * Gets a GVariantSerialised for a GVariant in state STATE_SERIALISED. | ||
33 | + */ | ||
34 | +inline static GVariantSerialised | ||
35 | +g_variant_to_serialised (GVariant *value) | ||
36 | +{ | ||
37 | + g_assert (value->state & STATE_SERIALISED); | ||
38 | + { | ||
39 | + GVariantSerialised serialised = { | ||
40 | + value->type_info, | ||
41 | + (gpointer) value->contents.serialised.data, | ||
42 | + value->size, | ||
43 | + value->depth, | ||
44 | + }; | ||
45 | + return serialised; | ||
46 | + } | ||
47 | +} | ||
48 | + | ||
49 | /* < private > | ||
50 | * g_variant_serialise: | ||
51 | * @value: a #GVariant | ||
52 | @@ -991,16 +1012,8 @@ g_variant_n_children (GVariant *value) | ||
53 | g_variant_lock (value); | ||
54 | |||
55 | if (value->state & STATE_SERIALISED) | ||
56 | - { | ||
57 | - GVariantSerialised serialised = { | ||
58 | - value->type_info, | ||
59 | - (gpointer) value->contents.serialised.data, | ||
60 | - value->size, | ||
61 | - value->depth, | ||
62 | - }; | ||
63 | - | ||
64 | - n_children = g_variant_serialised_n_children (serialised); | ||
65 | - } | ||
66 | + n_children = g_variant_serialised_n_children ( | ||
67 | + g_variant_to_serialised (value)); | ||
68 | else | ||
69 | n_children = value->contents.tree.n_children; | ||
70 | |||
71 | @@ -1061,12 +1074,7 @@ g_variant_get_child_value (GVariant *value, | ||
72 | } | ||
73 | |||
74 | { | ||
75 | - GVariantSerialised serialised = { | ||
76 | - value->type_info, | ||
77 | - (gpointer) value->contents.serialised.data, | ||
78 | - value->size, | ||
79 | - value->depth, | ||
80 | - }; | ||
81 | + GVariantSerialised serialised = g_variant_to_serialised (value); | ||
82 | GVariantSerialised s_child; | ||
83 | GVariant *child; | ||
84 | |||
85 | @@ -1179,14 +1187,7 @@ g_variant_is_normal_form (GVariant *value) | ||
86 | |||
87 | if (value->state & STATE_SERIALISED) | ||
88 | { | ||
89 | - GVariantSerialised serialised = { | ||
90 | - value->type_info, | ||
91 | - (gpointer) value->contents.serialised.data, | ||
92 | - value->size, | ||
93 | - value->depth | ||
94 | - }; | ||
95 | - | ||
96 | - if (g_variant_serialised_is_normal (serialised)) | ||
97 | + if (g_variant_serialised_is_normal (g_variant_to_serialised (value))) | ||
98 | value->state |= STATE_TRUSTED; | ||
99 | } | ||
100 | else | ||
101 | -- | ||
102 | 2.24.4 | ||
103 | |||