diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2014-01-30 02:31:39 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2014-01-30 02:31:39 +0100 |
commit | 89be80257477233dbda99a22d5afb560898b513e (patch) | |
tree | 44f088b28ca54f70e49ab4134f61214d81a7b34f | |
parent | ecbec64293a34e58844d132fbc83dcc0072c3d2f (diff) | |
download | dbus-1-tqt-89be80257477233dbda99a22d5afb560898b513e.tar.gz dbus-1-tqt-89be80257477233dbda99a22d5afb560898b513e.zip |
Fix duplication UnixFD during demarshall
Fix uninitialized UnixFD private data
-rw-r--r-- | tqdbusmarshall.cpp | 7 | ||||
-rw-r--r-- | tqdbusunixfd.cpp | 2 |
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); } |