summaryrefslogtreecommitdiff
path: root/dbus/dbus-gidl.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-01-14 11:22:34 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-01-14 11:24:22 +0000
commitee0f90d5d619ef53f30edbbeb19c7b6a5055a84b (patch)
tree38fc3efc70f716d45be739e89bcd4d22d7a82c6f /dbus/dbus-gidl.c
parentf1311ce39c6bcab1e25de20eb684bb78cce56e59 (diff)
downloaddbus-glib-ee0f90d5d619ef53f30edbbeb19c7b6a5055a84b.tar.gz
dbus-binding-tool: check for valid interface, member and property names
Properties are currently allowed to be arbitrary UTF-8 since this matches dbus-glib's runtime behaviour, although ideally new interfaces should use the more restrictive member naming rules (leading to names like MyProperty) for interop with QtDBus. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=7909 Reviewed-by: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
Diffstat (limited to 'dbus/dbus-gidl.c')
-rw-r--r--dbus/dbus-gidl.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/dbus/dbus-gidl.c b/dbus/dbus-gidl.c
index b5293bd..cde4d79 100644
--- a/dbus/dbus-gidl.c
+++ b/dbus/dbus-gidl.c
@@ -26,6 +26,8 @@
#include "dbus-gidl.h"
+#include <gio/gio.h>
+
struct BaseInfo
{
unsigned int refcount : 28;
@@ -342,6 +344,8 @@ interface_info_new (const char *name)
{
InterfaceInfo *info;
+ g_return_val_if_fail (g_dbus_is_interface_name (name), NULL);
+
info = g_new0 (InterfaceInfo, 1);
info->base.refcount = 1;
info->base.name = g_strdup (name);
@@ -467,6 +471,8 @@ method_info_new (const char *name)
{
MethodInfo *info;
+ g_return_val_if_fail (g_dbus_is_member_name (name), NULL);
+
info = g_new0 (MethodInfo, 1);
info->base.refcount = 1;
info->base.name = g_strdup (name);
@@ -573,6 +579,8 @@ signal_info_new (const char *name)
{
SignalInfo *info;
+ g_return_val_if_fail (g_dbus_is_member_name (name), NULL);
+
info = g_new0 (SignalInfo, 1);
info->base.refcount = 1;
info->base.name = g_strdup (name);
@@ -637,6 +645,9 @@ property_info_new (const char *name,
{
PropertyInfo *info;
+ g_return_val_if_fail (g_utf8_validate (name, -1, NULL), NULL);
+ g_return_val_if_fail (g_variant_is_signature (type), NULL);
+
info = g_new0 (PropertyInfo, 1);
info->base.refcount = 1;
info->base.name = g_strdup (name);