From 7f6ce4d8d234996b523b71abef139f1c80c88254 Mon Sep 17 00:00:00 2001 From: Egor Bychin Date: Mon, 11 Oct 2021 14:24:12 +0300 Subject: [PATCH] gvariant: Fix pointers being dereferenced despite NULL checks Conflict:NA Reference:https://gitlab.gnome.org/GNOME/glib/-/commit/7f6ce4d8d234996b523b71abef139f1c80c88254 --- glib/gvariant.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/glib/gvariant.c b/glib/gvariant.c index 4a9704c19c..5fa6a82685 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -3196,8 +3196,7 @@ struct heap_builder #define GVSB_MAGIC ((gsize) 1033660112u) #define GVSB_MAGIC_PARTIAL ((gsize) 2942751021u) #define GVHB_MAGIC ((gsize) 3087242682u) -#define is_valid_builder(b) (b != NULL && \ - GVSB(b)->magic == GVSB_MAGIC) +#define is_valid_builder(b) (GVSB(b)->magic == GVSB_MAGIC) #define is_valid_heap_builder(b) (GVHB(b)->magic == GVHB_MAGIC) /* Just to make sure that by adding a union to GVariantBuilder, we @@ -3207,7 +3206,9 @@ G_STATIC_ASSERT (sizeof (GVariantBuilder) == sizeof (gsize[16])); static gboolean ensure_valid_builder (GVariantBuilder *builder) { - if (is_valid_builder (builder)) + if (builder == NULL) + return FALSE; + else if (is_valid_builder (builder)) return TRUE; if (builder->u.s.partial_magic == GVSB_MAGIC_PARTIAL) { @@ -3853,8 +3854,7 @@ struct heap_dict #define GVSD_MAGIC ((gsize) 2579507750u) #define GVSD_MAGIC_PARTIAL ((gsize) 3488698669u) #define GVHD_MAGIC ((gsize) 2450270775u) -#define is_valid_dict(d) (d != NULL && \ - GVSD(d)->magic == GVSD_MAGIC) +#define is_valid_dict(d) (GVSD(d)->magic == GVSD_MAGIC) #define is_valid_heap_dict(d) (GVHD(d)->magic == GVHD_MAGIC) /* Just to make sure that by adding a union to GVariantDict, we didn't @@ -3864,7 +3864,9 @@ G_STATIC_ASSERT (sizeof (GVariantDict) == sizeof (gsize[16])); static gboolean ensure_valid_dict (GVariantDict *dict) { - if (is_valid_dict (dict)) + if (dict == NULL) + return FALSE; + else if (is_valid_dict (dict)) return TRUE; if (dict->u.s.partial_magic == GVSD_MAGIC_PARTIAL) { -- GitLab