[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