From 48a85bb45ff9d3ee302594ac41d102fa16b31350 Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Sat, 27 Sep 2014 20:40:11 +0200 Subject: [PATCH] dbus: fix crash when appending selinux context RHEL-only Related: #1113790 --- src/core/dbus-execute.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index 8162f1c..ae65be1 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -376,6 +376,7 @@ static int bus_execute_append_selinux_context(DBusMessageIter *i, const char *pr ExecContext *c = data; dbus_bool_t selinux_context_ignore; const char *selinux_context = NULL; + DBusMessageIter sub; assert(i); assert(property); @@ -387,10 +388,16 @@ static int bus_execute_append_selinux_context(DBusMessageIter *i, const char *pr selinux_context_ignore = c->selinux_context_ignore; - if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &selinux_context_ignore)) + if (!dbus_message_iter_open_container(i, DBUS_TYPE_STRUCT, NULL, &sub)) + return -ENOMEM; + + if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_BOOLEAN, &selinux_context_ignore)) return -ENOMEM; - if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &selinux_context)) + if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &selinux_context)) + return -ENOMEM; + + if (!dbus_message_iter_close_container(i, &sub)) return -ENOMEM; return 0;