Module: wine Branch: master Commit: f181e25a4755dc16a0704dea00e46da002a946f8 URL: https://gitlab.winehq.org/wine/wine/-/commit/f181e25a4755dc16a0704dea00e46da...
Author: Evan Tang etang@codeweavers.com Date: Wed Nov 2 16:14:17 2022 -0500
kernel32: Null-terminate the atom names passed to NtAddAtom.
Adobe Reader XI patches NtAddAtom() and expects the name to be null-terminated
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53872
---
dlls/kernel32/atom.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/kernel32/atom.c b/dlls/kernel32/atom.c index 2330131fb65..5b3128e5c05 100644 --- a/dlls/kernel32/atom.c +++ b/dlls/kernel32/atom.c @@ -110,8 +110,10 @@ ATOM WINAPI GlobalAddAtomA( LPCSTR str /* [in] String to add */ ) { if (!check_integral_atom( str, &atom )) { - WCHAR buffer[MAX_ATOM_LEN]; + /* Note: Adobe Reader XI in protected mode hijacks NtAddAtom and its replacement expects the string to be null terminated. */ + WCHAR buffer[MAX_ATOM_LEN+1]; DWORD len = MultiByteToWideChar( CP_ACP, 0, str, strlen(str), buffer, MAX_ATOM_LEN ); + buffer[len] = 0; if (!len) SetLastError( ERROR_INVALID_PARAMETER ); else if (!set_ntstatus( NtAddAtom( buffer, len * sizeof(WCHAR), &atom ))) atom = 0; }