summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2014-01-30 02:31:39 +0100
committerSlávek Banko <slavek.banko@axis.cz>2014-01-30 02:31:39 +0100
commit89be80257477233dbda99a22d5afb560898b513e (patch)
tree44f088b28ca54f70e49ab4134f61214d81a7b34f
parentecbec64293a34e58844d132fbc83dcc0072c3d2f (diff)
downloaddbus-1-tqt-89be80257477233dbda99a22d5afb560898b513e.tar.gz
dbus-1-tqt-89be80257477233dbda99a22d5afb560898b513e.zip
Fix duplication UnixFD during demarshall
Fix uninitialized UnixFD private data
-rw-r--r--tqdbusmarshall.cpp7
-rw-r--r--tqdbusunixfd.cpp2
2 files changed, 6 insertions, 3 deletions
diff --git a/tqdbusmarshall.cpp b/tqdbusmarshall.cpp
index f4aa5f7..7c21619 100644
--- a/tqdbusmarshall.cpp
+++ b/tqdbusmarshall.cpp
@@ -599,8 +599,11 @@ static TQT_DBusData qFetchParameter(DBusMessageIter *it)
return TQT_DBusData::fromStruct(memberList);
}
- case DBUS_TYPE_UNIX_FD:
- return TQT_DBusData::fromUnixFd(TQT_DBusUnixFd(qIterGet<dbus_uint32_t>(it)));
+ case DBUS_TYPE_UNIX_FD: {
+ TQT_DBusUnixFd unixFd;
+ unixFd.giveFileDescriptor(qIterGet<dbus_uint32_t>(it));
+ return TQT_DBusData::fromUnixFd(unixFd);
+ }
#if 0
case DBUS_TYPE_INVALID:
// TODO: check if there is better way to detect empty arrays
diff --git a/tqdbusunixfd.cpp b/tqdbusunixfd.cpp
index ba7a06c..3aa4ba2 100644
--- a/tqdbusunixfd.cpp
+++ b/tqdbusunixfd.cpp
@@ -35,7 +35,7 @@ TQT_DBusUnixFd::TQT_DBusUnixFd(const TQT_DBusUnixFd& other) : d(other.d)
d->ref();
}
-TQT_DBusUnixFd::TQT_DBusUnixFd(int other)
+TQT_DBusUnixFd::TQT_DBusUnixFd(int other) : d(0)
{
setFileDescriptor(other);
}