summaryrefslogtreecommitdiffstats
path: root/src/dbus/qdbusdemarshaller.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@nokia.com>2011-02-10 13:38:35 (GMT)
committerThiago Macieira <thiago.macieira@nokia.com>2011-02-17 15:02:14 (GMT)
commit1d8ebff955d357d3723487308e2906a12c6c043b (patch)
treed784db01d966a536401f448182bfccad0f2f6816 /src/dbus/qdbusdemarshaller.cpp
parentcc2db7a49c9208a00a913f7c4a410009814a5580 (diff)
downloadQt-1d8ebff955d357d3723487308e2906a12c6c043b.zip
Qt-1d8ebff955d357d3723487308e2906a12c6c043b.tar.gz
Qt-1d8ebff955d357d3723487308e2906a12c6c043b.tar.bz2
QtDBus: Make sure we can receive unknown types
We must make sure we advance the receiving iterator, or we end up in an infinite loop. Task-number: QTBUG-17476
Diffstat (limited to 'src/dbus/qdbusdemarshaller.cpp')
-rw-r--r--src/dbus/qdbusdemarshaller.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/dbus/qdbusdemarshaller.cpp b/src/dbus/qdbusdemarshaller.cpp
index 91dbf25..ac3b5fa 100644
--- a/src/dbus/qdbusdemarshaller.cpp
+++ b/src/dbus/qdbusdemarshaller.cpp
@@ -235,7 +235,12 @@ QVariant QDBusDemarshaller::toVariantInternal()
// qWarning("QDBusDemarshaller: Found unknown D-Bus type %d '%c'",
// q_dbus_message_iter_get_arg_type(&iterator),
// q_dbus_message_iter_get_arg_type(&iterator));
- return QVariant();
+ char *ptr = 0;
+ ptr += q_dbus_message_iter_get_arg_type(&iterator);
+ q_dbus_message_iter_next(&iterator);
+
+ // I hope you never dereference this pointer!
+ return QVariant::fromValue<void *>(ptr);
break;
};
}