Blob Blame History Raw
From 3c121a4f86d01d27399f0c2bbace6df03800a1d1 Mon Sep 17 00:00:00 2001
From: Kalev Lember <klember@redhat.com>
Date: Mon, 25 Jul 2016 10:43:53 +0200
Subject: [PATCH] engine: Don't crash when emitting PropertiesChanged for NULL
 values

When emitting PropertiesChanged, avoid putting NULL values into the
changed_properties array (and then subsequently crashing for the NULL).
Instead, use the invalidate_properties array that only lists the changed
property names, avoiding issues with NULL GVariants.

https://bugzilla.redhat.com/show_bug.cgi?id=1359479
---
 src/pk-engine.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/pk-engine.c b/src/pk-engine.c
index f7ced65..f731f3a 100644
--- a/src/pk-engine.c
+++ b/src/pk-engine.c
@@ -251,11 +251,18 @@ pk_engine_emit_offline_property_changed (PkEngine *engine,
 
 	/* build the dict */
 	g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
-	g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
-	g_variant_builder_add (&builder,
-			       "{sv}",
-			       property_name,
-			       property_value);
+	g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+
+	if (property_value == NULL) {
+		g_variant_builder_add (&invalidated_builder,
+		                       "s",
+		                       property_name);
+	} else {
+		g_variant_builder_add (&builder,
+		                       "{sv}",
+		                       property_name,
+		                       property_value);
+	}
 	g_dbus_connection_emit_signal (engine->priv->connection,
 				       NULL,
 				       PK_DBUS_PATH,
-- 
2.7.4