mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-21 08:28:53 +02:00
gvariant: Fix pointers being dereferenced despite NULL checks
This commit is contained in:
@@ -3196,8 +3196,7 @@ struct heap_builder
|
|||||||
#define GVSB_MAGIC ((gsize) 1033660112u)
|
#define GVSB_MAGIC ((gsize) 1033660112u)
|
||||||
#define GVSB_MAGIC_PARTIAL ((gsize) 2942751021u)
|
#define GVSB_MAGIC_PARTIAL ((gsize) 2942751021u)
|
||||||
#define GVHB_MAGIC ((gsize) 3087242682u)
|
#define GVHB_MAGIC ((gsize) 3087242682u)
|
||||||
#define is_valid_builder(b) (b != NULL && \
|
#define is_valid_builder(b) (GVSB(b)->magic == GVSB_MAGIC)
|
||||||
GVSB(b)->magic == GVSB_MAGIC)
|
|
||||||
#define is_valid_heap_builder(b) (GVHB(b)->magic == GVHB_MAGIC)
|
#define is_valid_heap_builder(b) (GVHB(b)->magic == GVHB_MAGIC)
|
||||||
|
|
||||||
/* Just to make sure that by adding a union to GVariantBuilder, we
|
/* 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
|
static gboolean
|
||||||
ensure_valid_builder (GVariantBuilder *builder)
|
ensure_valid_builder (GVariantBuilder *builder)
|
||||||
{
|
{
|
||||||
if (is_valid_builder (builder))
|
if (builder == NULL)
|
||||||
|
return FALSE;
|
||||||
|
else if (is_valid_builder (builder))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
if (builder->u.s.partial_magic == GVSB_MAGIC_PARTIAL)
|
if (builder->u.s.partial_magic == GVSB_MAGIC_PARTIAL)
|
||||||
{
|
{
|
||||||
@@ -3853,8 +3854,7 @@ struct heap_dict
|
|||||||
#define GVSD_MAGIC ((gsize) 2579507750u)
|
#define GVSD_MAGIC ((gsize) 2579507750u)
|
||||||
#define GVSD_MAGIC_PARTIAL ((gsize) 3488698669u)
|
#define GVSD_MAGIC_PARTIAL ((gsize) 3488698669u)
|
||||||
#define GVHD_MAGIC ((gsize) 2450270775u)
|
#define GVHD_MAGIC ((gsize) 2450270775u)
|
||||||
#define is_valid_dict(d) (d != NULL && \
|
#define is_valid_dict(d) (GVSD(d)->magic == GVSD_MAGIC)
|
||||||
GVSD(d)->magic == GVSD_MAGIC)
|
|
||||||
#define is_valid_heap_dict(d) (GVHD(d)->magic == GVHD_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
|
/* 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
|
static gboolean
|
||||||
ensure_valid_dict (GVariantDict *dict)
|
ensure_valid_dict (GVariantDict *dict)
|
||||||
{
|
{
|
||||||
if (is_valid_dict (dict))
|
if (dict == NULL)
|
||||||
|
return FALSE;
|
||||||
|
else if (is_valid_dict (dict))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
if (dict->u.s.partial_magic == GVSD_MAGIC_PARTIAL)
|
if (dict->u.s.partial_magic == GVSD_MAGIC_PARTIAL)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user