These apply on top of the patches I committed yesterday from Kees Cook. The first replaces his bounds check with a call to the Xlib Data() function that copies into the request buffer if there's room, otherwise puts the data directly on the wire to the X server. This case both simplified the code and removed a potential failure mode from XSetModifierMapping (though a highly unlikely one, given you'd have to have a huge number of keys per modifier to overflow the Xlib buffer size).
Tested by extracting my current modifier maps from xmodmap and then clearing them and passing them back into xmodmap and seeing they all set correctly. For the second case Kees added a check for, the XAddHosts & XRemoveHosts functions, attempting to switch to calling the Data() function just made the code more complicated, so I left it there. (Besides, anyone trying to pass hostname strings > 16k deserves to fail.) While working towards that, I did take the opportunity to get rid of the mass code duplication between those two functions, so if we do find a better way to do this in the future, we only have to edit one copy of the code instead of two. Alan Coopersmith (2): XSetModifierMapping: Use Data instead of GetReqExtra Refactor common code from XAddHost & XRemoveHost into single function src/Host.c | 53 ++++++++++++++--------------------------------------- src/ModMap.c | 12 +++--------- 2 files changed, 17 insertions(+), 48 deletions(-) -- 1.7.9.2 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
