diff options
author | Peter Seiderer <ps.report@gmx.net> | 2013-06-17 20:17:08 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-29 22:28:12 +0200 |
commit | 64e3bd481e5d54d555959ceecbd5c4576c571241 (patch) | |
tree | 9dcdf9285ed0570f21731eb229666ed45e952d52 /src/dbus/qdbuspendingcall_p.h | |
parent | 9eeb1bd4d44b71c4251090e9f3b7427a493d873d (diff) |
Fix unprotected access to QDBusPendingCallPrivate::pending.
In QDBusConnectionPrivate::waitForFinished() pcall->pending was used
after the protection by pcall->mutex was released. A simultaneous
call to QDBusConnectionPrivate::processFinishedCall() was able
to reset pcall->pending to null before it was used for the
q_dbus_pending_call_block(pcall->pending) call.
Fixed by releasing (and setting to 0) of pcall->pending in
processFinishedCall() only in case no one is waiting yet, otherwise
release pcall->pending by the first thread waiting in waitForFinished().
There is still a race condition about deleting QDBusPendingCallPrivate
(too early) which will be fixed in the next two commits.
Task-number: QTBUG-27809
Change-Id: I040173810ad90653fe1bd1915f22d8dd70d47d8c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/dbus/qdbuspendingcall_p.h')
0 files changed, 0 insertions, 0 deletions