Jacek Caban : urlmon: Fix user agent suffix separator handling.

Alexandre Julliard julliard at winehq.org
Fri Mar 26 16:03:31 CDT 2021


Module: wine
Branch: master
Commit: c034da78df60c81edc9b2f91c8e13b5744b5dadc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c034da78df60c81edc9b2f91c8e13b5744b5dadc

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Mar 26 16:33:20 2021 +0100

urlmon: Fix user agent suffix separator handling.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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, ")");




More information about the wine-cvs mailing list