[PATCH] winex11.drv: fix use of uninitialized memory
Thomas Faller
tfaller1 at gmx.de
Thu Sep 24 16:44:17 CDT 2015
Fix for https://bugs.winehq.org/show_bug.cgi?id=38728
---
dlls/winex11.drv/clipboard.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
-------------- next part --------------
diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c
index 6c6b3b9..eb155e6 100644
--- a/dlls/winex11.drv/clipboard.c
+++ b/dlls/winex11.drv/clipboard.c
@@ -367,8 +367,19 @@ static void intern_atoms(void)
i = 0;
LIST_FOR_EACH_ENTRY( format, &format_list, WINE_CLIPFORMAT, entry )
if (!format->drvData) {
- GetClipboardFormatNameW( format->wFormatID, buffer, 256 );
- len = WideCharToMultiByte(CP_UNIXCP, 0, buffer, -1, NULL, 0, NULL, NULL);
+ if (GetClipboardFormatNameW(format->wFormatID, buffer, 256) > 0)
+ {
+ /* use defined format name */
+ len = WideCharToMultiByte(CP_UNIXCP, 0, buffer, -1, NULL, 0, NULL, NULL);
+ }
+ else
+ {
+ /* create a name in the same way as ntdll/atom.c:integral_atom_name
+ * which is normally used by GetClipboardFormatNameW
+ */
+ static const WCHAR fmt[] = {'#','%','u',0};
+ len = sprintfW(buffer, fmt, format->wFormatID) + 1;
+ }
names[i] = HeapAlloc(GetProcessHeap(), 0, len);
WideCharToMultiByte(CP_UNIXCP, 0, buffer, -1, names[i++], len, NULL, NULL);
}
More information about the wine-patches
mailing list