X11DRV: GetKeyNameTextW returns a wrong length
Vincent Povirk
madewokherd+8cd9 at gmail.com
Sun Nov 30 18:48:46 CST 2008
I don't think "lpBuffer[nSize - 1] = 0;" is safe to remove. If nSize
is too small, the resulting string may not be NULL-terminated.
Patch-sending guidelines are at http://www.winehq.org/site/sending_patches.
Your patch is more likely to be committed if you write a conformance
test (although it may be enough in this case to send a patch that
obviously works, since this is documented behavior). The appropriate
place for that in the wine source is probably dlls/user32/tests. See
http://www.winehq.org/site/docs/winedev-guide/testing for guidelines
on conformance tests.
Vincent Povirk
On Thu, Nov 27, 2008 at 3:42 PM, Nils Hoyer <Privat at nils-hoyer.de> wrote:
> http://bugs.winehq.org/show_bug.cgi?id=16195#c0
>
>
> This is my first sending of a Wine patch - and first usage of a patch at
> all. I'm sorry, if I made any mistake...
>
>
> GetKeyNameTextW results a 1 instead of a the lengh of the Text. This patch
> fixes this bug.
>
> --- keyboard.old 2008-11-27 16:53:15.000000000 +0100
> +++ keyboard.c 2008-11-26 21:19:01.000000000 +0100
> @@ -2328,11 +2328,7 @@
> TRACE("found scan=%04x keyc=%04x keysym=%04x string=%s\n",
> scanCode, keyc, (int)keys, name);
> if (lpBuffer && nSize && name)
> - {
> - MultiByteToWideChar(CP_UNIXCP, 0, name, -1, lpBuffer, nSize);
> - lpBuffer[nSize - 1] = 0;
> - return 1;
> - }
> + return MultiByteToWideChar(CP_UNIXCP, 0, name, -1, lpBuffer, nSize)
> - 1;
> }
>
> /* Finally issue WARN for unknown keys */
>
>
>
>
More information about the wine-devel
mailing list