From a5d34a7c789f9a6b55da2a2f047edd0bc99d8c2d Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Tue, 18 Aug 2020 09:46:12 +0100 Subject: [PATCH] gvariant: Ensure GVS.depth is initialised When byteswapping the depth was accidentally left uninitialised. Coverity CID: #1430636 Signed-off-by: Philip Withnall --- glib/gvariant-core.c | 15 +++++++++++++++ glib/gvariant-core.h | 2 ++ glib/gvariant.c | 1 + 3 files changed, 18 insertions(+) diff --git a/glib/gvariant-core.c b/glib/gvariant-core.c index 10543ff9c..b34ba8d8e 100644 --- a/glib/gvariant-core.c +++ b/glib/gvariant-core.c @@ -666,6 +666,21 @@ g_variant_is_trusted (GVariant *value) return (value->state & STATE_TRUSTED) != 0; } +/* < internal > + * g_variant_get_depth: + * @value: a #GVariant + * + * Gets the nesting depth of a #GVariant. This is 0 for a #GVariant with no + * children. + * + * Returns: nesting depth of @value + */ +gsize +g_variant_get_depth (GVariant *value) +{ + return value->depth; +} + /* -- public -- */ /** diff --git a/glib/gvariant-core.h b/glib/gvariant-core.h index fc19b7ec4..fc04711ac 100644 --- a/glib/gvariant-core.h +++ b/glib/gvariant-core.h @@ -34,4 +34,6 @@ gboolean g_variant_is_trusted (GVarian GVariantTypeInfo * g_variant_get_type_info (GVariant *value); +gsize g_variant_get_depth (GVariant *value); + #endif /* __G_VARIANT_CORE_H__ */ diff --git a/glib/gvariant.c b/glib/gvariant.c index 281fb34d6..e4b1d4574 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -5952,6 +5952,7 @@ g_variant_byteswap (GVariant *value) serialised.type_info = g_variant_get_type_info (trusted); serialised.size = g_variant_get_size (trusted); serialised.data = g_malloc (serialised.size); + serialised.depth = g_variant_get_depth (trusted); g_variant_store (trusted, serialised.data); g_variant_unref (trusted);