From: Dmitry Timoshkov dmitry@baikal.ru
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- dlls/msv1_0/main.c | 16 +++++++--------- dlls/msv1_0/unixlib.h | 7 ++++--- 2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/dlls/msv1_0/main.c b/dlls/msv1_0/main.c index 53d8f1b6415..efa87d8d70f 100644 --- a/dlls/msv1_0/main.c +++ b/dlls/msv1_0/main.c @@ -194,7 +194,8 @@ static NTSTATUS NTAPI ntlm_SpAcquireCredentialsHandle( UNICODE_STRING *principal TRACE( "%s, %#lx, %p, %p, %p, %p, %p, %p\n", debugstr_us(principal), cred_use, logon_id, auth_data, get_key_fn, get_key_arg, cred, expiry );
- switch (cred_use & ~SECPKG_CRED_RESERVED) + cred_use &= ~SECPKG_CRED_RESERVED; + switch (cred_use) { case SECPKG_CRED_INBOUND: if (!(cred = malloc( sizeof(*cred) ))) return SEC_E_INSUFFICIENT_MEMORY; @@ -209,10 +210,12 @@ static NTSTATUS NTAPI ntlm_SpAcquireCredentialsHandle( UNICODE_STRING *principal status = SEC_E_OK; break;
+ case SECPKG_CRED_BOTH: + /* fall through */ case SECPKG_CRED_OUTBOUND: if (!(cred = malloc( sizeof(*cred) ))) return SEC_E_INSUFFICIENT_MEMORY;
- cred->mode = MODE_CLIENT; + cred->mode = cred_use == SECPKG_CRED_OUTBOUND ? MODE_CLIENT : MODE_BOTH; cred->username_arg = NULL; cred->domain_arg = NULL; cred->password = NULL; @@ -272,11 +275,6 @@ static NTSTATUS NTAPI ntlm_SpAcquireCredentialsHandle( UNICODE_STRING *principal status = SEC_E_OK; break;
- case SECPKG_CRED_BOTH: - FIXME( "SECPKG_CRED_BOTH not supported\n" ); - status = SEC_E_UNSUPPORTED_FUNCTION; - break; - default: status = SEC_E_UNKNOWN_CREDENTIALS; break; @@ -610,7 +608,7 @@ static NTSTATUS NTAPI ntlm_SpInitLsaModeContext( LSA_SEC_HANDLE cred_handle, LSA int password_len = 0; struct ntlm_cred *cred = (struct ntlm_cred *)cred_handle;
- if (!cred || cred->mode != MODE_CLIENT) + if (!cred || !(cred->mode & MODE_CLIENT)) { status = SEC_E_INVALID_HANDLE; goto done; @@ -901,7 +899,7 @@ static NTSTATUS NTAPI ntlm_SpAcceptLsaModeContext( LSA_SEC_HANDLE cred_handle, L struct ntlm_cred *cred = (struct ntlm_cred *)cred_handle; char *argv[3];
- if (!cred || cred->mode != MODE_SERVER) + if (!cred || !(cred->mode & MODE_SERVER)) { status = SEC_E_INVALID_HANDLE; goto done; diff --git a/dlls/msv1_0/unixlib.h b/dlls/msv1_0/unixlib.h index 92edb8e18dc..d71b86770fb 100644 --- a/dlls/msv1_0/unixlib.h +++ b/dlls/msv1_0/unixlib.h @@ -29,9 +29,10 @@ enum sign_direction
enum mode { - MODE_INVALID = -1, - MODE_CLIENT, - MODE_SERVER, + MODE_INVALID = 0, + MODE_CLIENT = 0x0001, + MODE_SERVER = 0x0002, + MODE_BOTH = 0x0003 };
struct ntlm_cred
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=146881
Your paranoid android.
=== debian11b (64 bit WoW report) ===
user32: input.c:4305: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 00000000004F00BC, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032 win.c:4037: Test failed: Expected active window 0000000005790150, got 0000000000500166. win.c:4038: Test failed: Expected focus window 0000000005790150, got 0000000000500166.
This merge request was approved by Hans Leidekker.