From 60caadec3a7d6ef64744be8533205ecfa0ff4179 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 5 Sep 2009 09:44:11 -0400 Subject: [PATCH] Windows: smb_FindShareCSCPolicy uses invalid registry key smb_FindShareCSCPolicy() ignored the error state of RegCreateKeyEx() and would pass the uninitialized hkCSCPolicy to RegQueryValueEx() and RegCloseKey(). While this did not produce invalid results, it did result in unnecessary operations and exception handling within the Win32 registry apis. LICENSE MIT Reviewed-on: http://gerrit.openafs.org/402 Tested-by: Asanka Herath Reviewed-by: Asanka Herath Reviewed-by: Derrick Brashear Tested-by: Jeffrey Altman Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/smb.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index 8c13a8420..14fdbb332 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -1971,21 +1971,26 @@ int smb_FindShareCSCPolicy(clientchar_t *shareName) HKEY hkCSCPolicy; int retval = CSC_POLICY_MANUAL; - RegCreateKeyEx( HKEY_LOCAL_MACHINE, - AFSREG_CLT_OPENAFS_SUBKEY "\\CSCPolicy", - 0, - "AFS", - REG_OPTION_NON_VOLATILE, - KEY_READ, - NULL, - &hkCSCPolicy, - NULL ); + if (RegCreateKeyEx( HKEY_LOCAL_MACHINE, + AFSREG_CLT_OPENAFS_SUBKEY "\\CSCPolicy", + 0, + "AFS", + REG_OPTION_NON_VOLATILE, + KEY_READ, + NULL, + &hkCSCPolicy, + NULL ) != ERROR_SUCCESS) + retval = cm_ClientStrCmpIA(_C("all"),shareName) ? CSC_POLICY_MANUAL : CSC_POLICY_DISABLE; len = sizeof(policy); if ( RegQueryValueExW( hkCSCPolicy, shareName, 0, &dwType, (LPBYTE) policy, &len ) || len == 0) { retval = cm_ClientStrCmpIA(_C("all"),shareName) ? CSC_POLICY_MANUAL : CSC_POLICY_DISABLE; } + else if (cm_ClientStrCmpIA(policy, _C("manual")) == 0) + { + retval = CSC_POLICY_MANUAL; + } else if (cm_ClientStrCmpIA(policy, _C("documents")) == 0) { retval = CSC_POLICY_DOCUMENTS; -- 2.39.5