summaryrefslogtreecommitdiffstats
path: root/src/dbus
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2012-03-21 18:24:38 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-22 18:59:45 +0100
commitce4fb74ecd742abd01561bf90cd0d3b7174e7f4b (patch)
tree2c41cc745519fd06d702564fafd9263dd97f9e21 /src/dbus
parentc878e2803b38262507486a7da6f2c3efa4573eb6 (diff)
Fix assert in libdbus-1 from tst_qdbusmarshall.
Serializing an empty object path was crashing with > arguments to dbus_message_iter_append_basic() were incorrect, > assertion "_dbus_check_is_valid_path (*string_p)" failed in file > dbus-message.c line 2555. Thiago says this depends on the libdbus build settings, which is why it didn't happen to everyone. OpenSUSE-12.1 here. Change-Id: I657d28d5d915706a22abfd273aad88d20e2d112a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/qdbusmarshaller.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/dbus/qdbusmarshaller.cpp b/src/dbus/qdbusmarshaller.cpp
index 1f6ef99153..145d991e0e 100644
--- a/src/dbus/qdbusmarshaller.cpp
+++ b/src/dbus/qdbusmarshaller.cpp
@@ -124,19 +124,23 @@ void QDBusMarshaller::append(const QString &arg)
inline void QDBusMarshaller::append(const QDBusObjectPath &arg)
{
QByteArray data = arg.path().toUtf8();
- if (!ba && data.isEmpty())
+ if (!ba && data.isEmpty()) {
error(QLatin1String("Invalid object path passed in arguments"));
- const char *cdata = data.constData();
- qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
+ } else {
+ const char *cdata = data.constData();
+ qIterAppend(&iterator, ba, DBUS_TYPE_OBJECT_PATH, &cdata);
+ }
}
inline void QDBusMarshaller::append(const QDBusSignature &arg)
{
QByteArray data = arg.signature().toUtf8();
- if (!ba && data.isEmpty())
+ if (!ba && data.isEmpty()) {
error(QLatin1String("Invalid signature passed in arguments"));
- const char *cdata = data.constData();
- qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
+ } else {
+ const char *cdata = data.constData();
+ qIterAppend(&iterator, ba, DBUS_TYPE_SIGNATURE, &cdata);
+ }
}
inline void QDBusMarshaller::append(const QDBusUnixFileDescriptor &arg)