From 658338b015fa6cd081726a6c96ab8c756857974a Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 15 Feb 2006 16:31:15 +0000 Subject: [PATCH] windows-reg-fix-20060215 cleanup the back connection hostname code --- src/WINNT/afsd/afsd_init.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) 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) { -- 2.39.5