Module: wine Branch: master Commit: c034da78df60c81edc9b2f91c8e13b5744b5dadc URL: https://source.winehq.org/git/wine.git/?a=commit;h=c034da78df60c81edc9b2f91c...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Mar 26 16:33:20 2021 +0100
urlmon: Fix user agent suffix separator handling.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/urlmon/session.c | 19 +++++++++---------- dlls/urlmon/tests/misc.c | 3 +++ 2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c index 0a1be0ba367..3a843cd6593 100644 --- a/dlls/urlmon/session.c +++ b/dlls/urlmon/session.c @@ -550,22 +550,22 @@ static size_t obtain_user_agent(unsigned int version, WCHAR *ret, size_t size)
if(sizeof(void*) == 8) #ifdef __x86_64__ - os_type = L"Win64; x64; "; + os_type = L"; Win64; x64"; #else - os_type = L"Win64; "; + os_type = L"; Win64"; #endif else if(IsWow64Process(GetCurrentProcess(), &is_wow) && is_wow) - os_type = L"WOW64; "; + os_type = L"; WOW64"; else os_type = L"";
- swprintf(ret + len, size - len, L"Windows %s%d.%d; %s", is_nt, info.dwMajorVersion, + swprintf(ret + len, size - len, L"Windows %s%d.%d%s", is_nt, info.dwMajorVersion, info.dwMinorVersion, os_type); len = lstrlenW(ret);
if(!quirks) { - wcscpy(ret + len, L"Trident/7.0"); - len += ARRAY_SIZE(L"Trident/7.0") - 1; + wcscpy(ret + len, L"; Trident/7.0"); + len += ARRAY_SIZE(L"; Trident/7.0") - 1; }
if(version < 9) { @@ -575,10 +575,9 @@ static size_t obtain_user_agent(unsigned int version, WCHAR *ret, size_t size) DWORD value_len, idx;
for(idx = 0;; idx++) { - if(idx) { - ret[len++] = ';'; - ret[len++] = ' '; - } + ret[len++] = ';'; + ret[len++] = ' '; + value_len = size - len - 2; res = RegEnumValueW(key, idx, ret + len, &value_len, NULL, NULL, NULL, NULL); if(res != ERROR_SUCCESS) diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c index 5f468b80286..d64dcc5965d 100644 --- a/dlls/urlmon/tests/misc.c +++ b/dlls/urlmon/tests/misc.c @@ -1560,6 +1560,9 @@ static void test_user_agent(void) if(i == 11) { p += check_prefix(p, "; rv:11.0) like Gecko"); }else { + if(i != 1) + ok(*p == ';' || *p == ')', "unexpected suffix %s for version %u\n", + wine_dbgstr_a(p), i); if(i < 9) p = strchr(p, ')'); p += check_prefix(p, ")");