summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWill Thompson <will@willthompson.co.uk>2014-07-10 14:34:37 +0100
committerMartin T. H. Sandsmark <martin.sandsmark@kde.org>2014-08-03 14:07:00 +0200
commitdca1048239b5f3b973a847a21de1ee83c92f6631 (patch)
treea3e578995e4ea7b05ffd99b260a4766aecc5b8af
parent3238443dc1ff5e7d0a9457dce5e0fb46c7bc1624 (diff)
downloadlibvncserver-dca1048239b5f3b973a847a21de1ee83c92f6631.zip
libvncserver-dca1048239b5f3b973a847a21de1ee83c92f6631.tar.gz
x11vnc: fix double X_UNLOCK on xrandr events
check_xrandr_event() assumes X_LOCK is taken before it is called, and currently calls X_UNLOCK on behalf of the caller. But in practice, all callers assume that the lock is still held after check_xrandr_event() returns. In particular, this leads to a double-unlock and crash in check_xevents() on any xrandr event.
-rw-r--r--x11vnc/xrandr.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/x11vnc/xrandr.c b/x11vnc/xrandr.c
index d0d68e1..f2fb5ea 100644
--- a/x11vnc/xrandr.c
+++ b/x11vnc/xrandr.c
@@ -268,6 +268,7 @@ int check_xrandr_event(char *msg) {
/* under do_change caller normally returns before its X_UNLOCK */
X_UNLOCK;
handle_xrandr_change(rev->width, rev->height);
+ X_LOCK;
}
if (qout) {
return do_change;
OpenPOWER on IntegriCloud