From: Jeffrey Altman Date: Wed, 15 Feb 2006 16:31:15 +0000 (+0000) Subject: windows-reg-fix-20060215 X-Git-Tag: openafs-devel-1_5_0~21 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=658338b015fa6cd081726a6c96ab8c756857974a;p=packages%2Fo%2Fopenafs.git windows-reg-fix-20060215 cleanup the back connection hostname code --- diff --git a/src/WINNT/afsd/afsd_init.c b/src/WINNT/afsd/afsd_init.c index 22c8b7a33..678a14912 100644 --- a/src/WINNT/afsd/afsd_init.c +++ b/src/WINNT/afsd/afsd_init.c @@ -279,32 +279,34 @@ configureBackConnectionHostNames(void) KEY_READ|KEY_WRITE, &hkMSV10) == ERROR_SUCCESS ) { - if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, &dwType, NULL, &dwSize) == ERROR_SUCCESS) { - pHostNames = malloc(dwSize + strlen(cm_NetbiosName) + 1); - RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, &dwType, pHostNames, &dwSize); - - for (pName = pHostNames; *pName ; pName += strlen(pName) + 1) - { - if ( !stricmp(pName, cm_NetbiosName) ) { - bNameFound = TRUE; - break; - } - } + if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, + &dwType, NULL, &dwSize) == ERROR_SUCCESS) { + dwSize += strlen(cm_NetbiosName) + 1; + pHostNames = malloc(dwSize); + if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, &dwType, + pHostNames, &dwSize) == ERROR_SUCCESS) { + for (pName = pHostNames; *pName ; pName += strlen(pName) + 1) + { + if ( !stricmp(pName, cm_NetbiosName) ) { + bNameFound = TRUE; + break; + } + } + } } if ( !bNameFound ) { size_t size = strlen(cm_NetbiosName) + 2; if ( !pHostNames ) { pHostNames = malloc(size); - dwSize = 1; + dwSize = size; + pName = pHostNames; } - pName = pHostNames; StringCbCopyA(pName, size, cm_NetbiosName); pName += size - 1; *pName = '\0'; /* add a second nul terminator */ dwType = REG_MULTI_SZ; - dwSize += (DWORD)strlen(cm_NetbiosName) + 1; RegSetValueEx( hkMSV10, "BackConnectionHostNames", 0, dwType, pHostNames, dwSize); if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, @@ -370,8 +372,12 @@ configureBackConnectionHostNames(void) } RegCloseKey(hkMSV10); } + + if (pHostNames) + free(pHostNames); } + #if !defined(DJGPP) static void afsd_InitServerPreferences(void) {