From 12cded29f13cce075211694a40e2f2ff32b7d3c5 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Thu, 21 Oct 2010 20:30:37 +0000 Subject: [PATCH] [ADVAPI32] - Roel Messiant: Fix short-circuit evaluation. See issue #5677 for more details. svn path=/trunk/; revision=49216 --- reactos/dll/win32/advapi32/sec/cred.c | 53 +++++++++++++++++---------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/reactos/dll/win32/advapi32/sec/cred.c b/reactos/dll/win32/advapi32/sec/cred.c index e8e0283b2ee..cd74a6a17d0 100644 --- a/reactos/dll/win32/advapi32/sec/cred.c +++ b/reactos/dll/win32/advapi32/sec/cred.c @@ -103,16 +103,22 @@ static DWORD registry_read_credential(HKEY hkey, PCREDENTIALW credential, credential->TargetName = (LPWSTR)buffer; ret = RegQueryValueExW(hkey, NULL, 0, &type, (LPVOID)credential->TargetName, &count); - if (ret != ERROR_SUCCESS || type != REG_SZ) return ret; + if (ret != ERROR_SUCCESS) + return ret; + else if (type != REG_SZ) + return ERROR_REGISTRY_CORRUPT; buffer += count; } ret = RegQueryValueExW(hkey, wszCommentValue, 0, &type, NULL, &count); - if (ret != ERROR_FILE_NOT_FOUND && ret != ERROR_SUCCESS) - return ret; - else if (type != REG_SZ) - return ERROR_REGISTRY_CORRUPT; - *len += count; + if (ret != ERROR_FILE_NOT_FOUND) + { + if (ret != ERROR_SUCCESS) + return ret; + else if (type != REG_SZ) + return ERROR_REGISTRY_CORRUPT; + *len += count; + } if (credential) { credential->Comment = (LPWSTR)buffer; @@ -129,11 +135,14 @@ static DWORD registry_read_credential(HKEY hkey, PCREDENTIALW credential, } ret = RegQueryValueExW(hkey, wszTargetAliasValue, 0, &type, NULL, &count); - if (ret != ERROR_FILE_NOT_FOUND && ret != ERROR_SUCCESS) - return ret; - else if (type != REG_SZ) - return ERROR_REGISTRY_CORRUPT; - *len += count; + if (ret != ERROR_FILE_NOT_FOUND) + { + if (ret != ERROR_SUCCESS) + return ret; + else if (type != REG_SZ) + return ERROR_REGISTRY_CORRUPT; + *len += count; + } if (credential) { credential->TargetAlias = (LPWSTR)buffer; @@ -150,11 +159,14 @@ static DWORD registry_read_credential(HKEY hkey, PCREDENTIALW credential, } ret = RegQueryValueExW(hkey, wszUserNameValue, 0, &type, NULL, &count); - if (ret != ERROR_FILE_NOT_FOUND && ret != ERROR_SUCCESS) - return ret; - else if (type != REG_SZ) - return ERROR_REGISTRY_CORRUPT; - *len += count; + if (ret != ERROR_FILE_NOT_FOUND) + { + if (ret != ERROR_SUCCESS) + return ret; + else if (type != REG_SZ) + return ERROR_REGISTRY_CORRUPT; + *len += count; + } if (credential) { credential->UserName = (LPWSTR)buffer; @@ -171,9 +183,12 @@ static DWORD registry_read_credential(HKEY hkey, PCREDENTIALW credential, } ret = read_credential_blob(hkey, key_data, NULL, &count); - if (ret != ERROR_FILE_NOT_FOUND && ret != ERROR_SUCCESS) - return ret; - *len += count; + if (ret != ERROR_FILE_NOT_FOUND) + { + if (ret != ERROR_SUCCESS) + return ret; + *len += count; + } if (credential) { credential->CredentialBlob = (LPBYTE)buffer;