c17872d502
Calling strlen on char[4] that does not need to contain '\0' is wrong and X server may end up running into uninitialized memory. In addition GCC 8 is clever enough that it knows that strlen on char[4] can return 0, 1, 2, 3 or cause undefined behavior. With this knowledge it can optimize away the min(..., 4). In reality it can cause the memcpy to be called with bigger size than 4 and overflow the destination buffer. Fixes: |
||
---|---|---|
.. | ||
Makefile.am | ||
README.compiled | ||
XKBAlloc.c | ||
XKBGAlloc.c | ||
XKBMAlloc.c | ||
XKBMisc.c | ||
XKM_file_format.txt | ||
ddxBeep.c | ||
ddxCtrls.c | ||
ddxKillSrv.c | ||
ddxLEDs.c | ||
ddxLoad.c | ||
ddxPrivate.c | ||
ddxVT.c | ||
maprules.c | ||
meson.build | ||
xkb.c | ||
xkb.h | ||
xkbAccessX.c | ||
xkbActions.c | ||
xkbDflts.h | ||
xkbEvents.c | ||
xkbInit.c | ||
xkbLEDs.c | ||
xkbPrKeyEv.c | ||
xkbSwap.c | ||
xkbUtils.c | ||
xkbfmisc.c | ||
xkbgeom.h | ||
xkbout.c | ||
xkbtext.c | ||
xkmread.c |
README.compiled
The X server uses this directory to store the compiled version of the current keymap and/or any scratch keymaps used by clients. The X server or some other tool might destroy or replace the files in this directory, so it is not a safe place to store compiled keymaps for long periods of time. The default keymap for any server is usually stored in: X<num>-default.xkm where <num> is the display number of the server in question, which makes it possible for several servers *on the same host* to share the same directory. Unless the X server is modified, sharing this directory between servers on different hosts could cause problems.