• Olivier Fourdan's avatar
    xkb: Don't swap XkbSetGeometry data in the input buffer · 747cea16
    Olivier Fourdan authored
    The XkbSetGeometry request embeds data which needs to be swapped when the
    server and the client have different endianess.
    
    _XkbSetGeometry() invokes functions that swap these data directly in the
    input buffer.
    
    However, ProcXkbSetGeometry() may call _XkbSetGeometry() more than once
    (if there is more than one keyboard), thus causing on swapped clients the
    same data to be swapped twice in memory, further causing a server crash
    because the strings lengths on the second time are way off bounds.
    
    To allow _XkbSetGeometry() to run reliably more than once with swapped
    clients, do not swap the data in the buffer, use variables instead.
    Signed-off-by: 's avatarOlivier Fourdan <ofourdan@redhat.com>
    Signed-off-by: 's avatarPeter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 81c90dc8)
    (cherry picked from commit 29be310c)
    Signed-off-by: Julien Cristau's avatarJulien Cristau <jcristau@debian.org>
    747cea16
Name
Last commit
Last update
..
Makefile.am Loading commit data...
README.compiled Loading commit data...
XKBAlloc.c Loading commit data...
XKBGAlloc.c Loading commit data...
XKBMAlloc.c Loading commit data...
XKBMisc.c Loading commit data...
XKM_file_format.txt Loading commit data...
ddxBeep.c Loading commit data...
ddxCtrls.c Loading commit data...
ddxKillSrv.c Loading commit data...
ddxLEDs.c Loading commit data...
ddxLoad.c Loading commit data...
ddxPrivate.c Loading commit data...
ddxVT.c Loading commit data...
maprules.c Loading commit data...
xkb.c Loading commit data...
xkb.h Loading commit data...
xkbAccessX.c Loading commit data...
xkbActions.c Loading commit data...
xkbDflts.h Loading commit data...
xkbEvents.c Loading commit data...
xkbInit.c Loading commit data...
xkbLEDs.c Loading commit data...
xkbPrKeyEv.c Loading commit data...
xkbSwap.c Loading commit data...
xkbUtils.c Loading commit data...
xkbfmisc.c Loading commit data...
xkbgeom.h Loading commit data...
xkbout.c Loading commit data...
xkbtext.c Loading commit data...
xkmread.c Loading commit data...