From ce482d4fd8fe565810391b0ac89e4b1ac8fd7212 Mon Sep 17 00:00:00 2001 From: "ISHIKAWA,chiaki" Date: Tue, 18 Dec 2012 15:28:05 +0000 Subject: Fix bogus timestamp generated by XIM Fix bogus timestamp generted by XIM due to uninitialized data field. Also set appropriate serial, too. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=39367 Signed-off-by: Chiaki ISHIKAWA Signed-off-by: Alan Coopersmith Backported-to-NX-by: Ulrich Sibiller --- nx-X11/lib/X11/imDefLkup.c | 13 +++++++++++++ nx-X11/lib/X11/imTrans.c | 8 ++++++++ 2 files changed, 21 insertions(+) (limited to 'nx-X11/lib/X11') diff --git a/nx-X11/lib/X11/imDefLkup.c b/nx-X11/lib/X11/imDefLkup.c index 8a6b7e5a9..3317831e6 100644 --- a/nx-X11/lib/X11/imDefLkup.c +++ b/nx-X11/lib/X11/imDefLkup.c @@ -269,6 +269,8 @@ _XimForwardEventCore( int ret_code; INT16 len; + bzero(buf32, sizeof(buf32)); /* valgrind noticed uninitialized memory use! */ + if (!(len = _XimSetEventToWire(ev, (xEvent *)&buf_s[4]))) return False; /* X event */ @@ -708,6 +710,8 @@ _XimCommitRecv( & (KEYPRESS_MASK | KEYRELEASE_MASK)) MARK_FABRICATED(im); + bzero(&ev, sizeof(ev)); /* uninitialized : found when running kterm under valgrind */ + ev.type = KeyPress; ev.send_event = False; ev.display = im->core.display; @@ -715,6 +719,15 @@ _XimCommitRecv( ev.keycode = 0; ev.state = 0; + ev.time = 0L; + ev.serial = LastKnownRequestProcessed(im->core.display); + /* FIXME : + I wish there were COMMENTs (!) about the data passed around. + */ +#if 0 + fprintf(stderr,"%s,%d: putback k press FIXED ev.time=0 ev.serial=%lu\n", __FILE__, __LINE__, ev.serial); +#endif + XPutBackEvent(im->core.display, (XEvent *)&ev); return True; diff --git a/nx-X11/lib/X11/imTrans.c b/nx-X11/lib/X11/imTrans.c index f06759f88..3cea659f9 100644 --- a/nx-X11/lib/X11/imTrans.c +++ b/nx-X11/lib/X11/imTrans.c @@ -222,12 +222,20 @@ _XimTransInternalConnection( if (spec->is_putback) return; + + bzero(&ev, sizeof(ev)); /* FIXME: other fields may be accessed, too. */ kev = (XKeyEvent *)&ev; kev->type = KeyPress; kev->send_event = False; kev->display = im->core.display; kev->window = spec->window; kev->keycode = 0; + kev->time = 0L; + kev->serial = LastKnownRequestProcessed(im->core.display); +#if 0 + fprintf(stderr,"%s,%d: putback FIXED kev->time=0 kev->serial=%lu\n", __FILE__, __LINE__, kev->serial); +#endif + XPutBackEvent(im->core.display, &ev); XFlush(im->core.display); spec->is_putback = True; -- cgit v1.2.3