[PATCH] wintrust: Set last error in WinVerifyTrust.

Daniel Lehman dlehman25 at gmail.com
Tue Feb 25 00:22:01 CST 2020


From: Daniel Lehman <dlehman at esri.com>

Signed-off-by: Daniel Lehman <dlehman25 at gmail.com>
---
 dlls/wintrust/tests/softpub.c | 10 ++++++++++
 dlls/wintrust/wintrust_main.c |  1 +
 2 files changed, 11 insertions(+)

diff --git a/dlls/wintrust/tests/softpub.c b/dlls/wintrust/tests/softpub.c
index 5a150e684d..25d458faad 100644
--- a/dlls/wintrust/tests/softpub.c
+++ b/dlls/wintrust/tests/softpub.c
@@ -845,7 +845,9 @@ static void test_wintrust(void)
     file.pcwszFilePath = pathW;
     /* Test with an empty file */
     file.hFile = create_temp_file(pathW);
+    SetLastError(0xdeadbeef);
     r = WinVerifyTrust(INVALID_HANDLE_VALUE, &generic_action_v2, &wtd);
+    ok(r == GetLastError(), "expected %08x, got %08x\n", GetLastError(), r);
     ok(r == TRUST_E_SUBJECT_FORM_UNKNOWN,
      "expected TRUST_E_SUBJECT_FORM_UNKNOWN, got %08x\n", r);
     CloseHandle(file.hFile);
@@ -853,18 +855,26 @@ static void test_wintrust(void)
     file.hFile = NULL;
     /* Test with a known file path, which we expect not have a signature */
     getNotepadPath(pathW, MAX_PATH);
+    SetLastError(0xdeadbeef);
     r = WinVerifyTrust(INVALID_HANDLE_VALUE, &generic_action_v2, &wtd);
+    ok(r == GetLastError(), "expected %08x, got %08x\n", GetLastError(), r);
     ok(r == TRUST_E_NOSIGNATURE || r == CRYPT_E_FILE_ERROR,
      "expected TRUST_E_NOSIGNATURE or CRYPT_E_FILE_ERROR, got %08x\n", r);
     wtd.dwStateAction = WTD_STATEACTION_CLOSE;
+    SetLastError(0xdeadbeef);
     r = WinVerifyTrust(INVALID_HANDLE_VALUE, &generic_action_v2, &wtd);
+    ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %08x\n", GetLastError());
     ok(r == S_OK, "WinVerifyTrust failed: %08x\n", r);
     wtd.dwStateAction = WTD_STATEACTION_VERIFY;
+    SetLastError(0xdeadbeef);
     hr = WinVerifyTrustEx(INVALID_HANDLE_VALUE, &generic_action_v2, &wtd);
+    ok(hr == GetLastError(), "expected %08x, got %08x\n", GetLastError(), hr);
     ok(hr == TRUST_E_NOSIGNATURE || hr == CRYPT_E_FILE_ERROR,
      "expected TRUST_E_NOSIGNATURE or CRYPT_E_FILE_ERROR, got %08x\n", hr);
     wtd.dwStateAction = WTD_STATEACTION_CLOSE;
+    SetLastError(0xdeadbeef);
     r = WinVerifyTrust(INVALID_HANDLE_VALUE, &generic_action_v2, &wtd);
+    ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %08x\n", GetLastError());
     ok(r == S_OK, "WinVerifyTrust failed: %08x\n", r);
 }
 
diff --git a/dlls/wintrust/wintrust_main.c b/dlls/wintrust/wintrust_main.c
index a0b8a137ed..768522ea4a 100644
--- a/dlls/wintrust/wintrust_main.c
+++ b/dlls/wintrust/wintrust_main.c
@@ -732,6 +732,7 @@ LONG WINAPI WinVerifyTrust( HWND hwnd, GUID *ActionID, LPVOID ActionData )
         }
     }
 
+    if (err) SetLastError(err);
     TRACE("returning %08x\n", err);
     return err;
 }
-- 
2.17.1




More information about the wine-devel mailing list