Module: wine Branch: master Commit: 61077035fcbb9a21beea588d2c03c92350d43b57 URL: http://source.winehq.org/git/wine.git/?a=commit;h=61077035fcbb9a21beea588d2c...
Author: Juan Lang juan.lang@gmail.com Date: Wed Sep 17 16:15:34 2008 -0700
wintrust: Don't assume dwStateAction is set in WINTRUST_DATA.
---
dlls/wintrust/wintrust_main.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/dlls/wintrust/wintrust_main.c b/dlls/wintrust/wintrust_main.c index ed6a8ed..e7b9af4 100644 --- a/dlls/wintrust/wintrust_main.c +++ b/dlls/wintrust/wintrust_main.c @@ -381,6 +381,8 @@ LONG WINAPI WinVerifyTrust( HWND hwnd, GUID *ActionID, LPVOID ActionData ) err = WINTRUST_PublishedSoftware(hwnd, ActionID, ActionData); else { + DWORD stateAction; + /* Check known actions to warn of possible problems */ if (!IsEqualGUID(ActionID, &unknown) && !IsEqualGUID(ActionID, &generic_verify_v2) && @@ -388,7 +390,14 @@ LONG WINAPI WinVerifyTrust( HWND hwnd, GUID *ActionID, LPVOID ActionData ) !IsEqualGUID(ActionID, &generic_chain_verify)) WARN("unknown action %s, default behavior may not be right\n", debugstr_guid(ActionID)); - switch (actionData->dwStateAction) + if (WVT_ISINSTRUCT(WINTRUST_DATA, actionData->cbStruct, dwStateAction)) + stateAction = actionData->dwStateAction; + else + { + TRACE("no dwStateAction, assuming WTD_STATEACTION_IGNORE\n"); + stateAction = WTD_STATEACTION_IGNORE; + } + switch (stateAction) { case WTD_STATEACTION_IGNORE: err = WINTRUST_DefaultVerifyAndClose(hwnd, ActionID, ActionData);