summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2008-10-01 13:49:48 -0400
committerColin Walters <walters@verbum.org>2008-10-01 15:00:39 -0400
commitf2922ce4bcf06aa8ee540accbd005c472c95d28f (patch)
treeaf09eaacfcfb8ba82aedee29fefde1efab5c1115
parent008bca5a4e3600d56ac7c1fe984789110b83e1b2 (diff)
Bug 17803: Panic from dbus_signature_validate
* dbus/dbus-marshal-validate.c: Ensure we validate a basic type before calling is_basic on it. * dbus-marshal-validate-util.c: Test.
-rw-r--r--dbus/dbus-marshal-validate-util.c1
-rw-r--r--dbus/dbus-marshal-validate.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/dbus/dbus-marshal-validate-util.c b/dbus/dbus-marshal-validate-util.c
index f2901d74..5365d6d3 100644
--- a/dbus/dbus-marshal-validate-util.c
+++ b/dbus/dbus-marshal-validate-util.c
@@ -228,6 +228,7 @@ _dbus_marshal_validate_test (void)
"123",
".",
"("
+ "a{(ii)i}" /* https://bugs.freedesktop.org/show_bug.cgi?id=17803 */
};
/* Signature with reason */
diff --git a/dbus/dbus-marshal-validate.c b/dbus/dbus-marshal-validate.c
index e63a463b..b24b5bc2 100644
--- a/dbus/dbus-marshal-validate.c
+++ b/dbus/dbus-marshal-validate.c
@@ -247,6 +247,7 @@ _dbus_validate_signature_with_reason (const DBusString *type_str,
}
if (last == DBUS_DICT_ENTRY_BEGIN_CHAR &&
+ _dbus_type_is_valid (*p) &&
!dbus_type_is_basic (*p))
{
result = DBUS_INVALID_DICT_KEY_MUST_BE_BASIC_TYPE;