vcl/unx/generic/window/salframe.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
New commits: commit 3d906db0a5542a0d5d4cddf2833075861f6b001e Author: Julien Nabet <serval2...@yahoo.fr> Date: Tue Mar 21 21:42:32 2017 +0100 Fix overflow case returned by XmbLookupString man of XbmLookupString when XBufferOverflow: XBufferOverflow The input string to be returned is too large for the supplied buffer_return. The required size (for XmbLookupString, Xutf8LookupString in bytes; for XwcLookupâ String in characters) is returned as the value of the function, and the contents of buffer_return and keysym_return are not modified. The client should recall the function with the same event and a buffer of adequate size to obtain the string. So in this case retrieve length expected then call it with +1 for null termination Change-Id: I8507bb249a411c7e899746e0598f4a055a26fb19 Reviewed-on: https://gerrit.libreoffice.org/35519 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Michael Stahl <mst...@redhat.com> diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx index 3183c0b67167..af37168137bb 100644 --- a/vcl/unx/generic/window/salframe.cxx +++ b/vcl/unx/generic/window/salframe.cxx @@ -3009,7 +3009,10 @@ long X11SalFrame::HandleKeyEvent( XKeyEvent *pEvent ) &nStatus, mpInputContext->GetContext() ); if ( nStatus == XBufferOverflow ) { - nLen *= 2; + // In case of overflow, XmbLookupString (called by GetKeySym) + // returns required size + // TODO : check if +1 is needed for 0 terminator + nLen += 1; pPrintable = static_cast<char*>(alloca( nLen )); nKeySym = pDisplay_->GetKeySym( pEvent, pPrintable, &nLen, &nUnmodifiedKeySym,
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits