2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-04 16:45:24 +00:00

Code cleanup. Checks now for out-of-memory errors on mallocs, and privides additional error information on failure. Fixed missing Done message in GUI

This commit is contained in:
Danny Mayer
2001-10-05 05:45:52 +00:00
parent 94ce9c52fb
commit 290e1b94e4
4 changed files with 104 additions and 59 deletions

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: AccountInfo.cpp,v 1.2 2001/09/29 00:01:43 gson Exp $ */ /* $Id: AccountInfo.cpp,v 1.3 2001/10/05 05:45:48 mayer Exp $ */
#ifndef UNICODE #ifndef UNICODE
#define UNICODE #define UNICODE
@@ -28,6 +28,7 @@
#include <ntsecapi.h> #include <ntsecapi.h>
#include <isc/ntgroups.h> #include <isc/ntgroups.h>
#include <isc/result.h>
#include "AccountInfo.h" #include "AccountInfo.h"
#define MAX_NAME_LENGTH 256 #define MAX_NAME_LENGTH 256
@@ -114,6 +115,7 @@ GetAccountPrivileges(char *name, wchar_t **PrivList, unsigned int *PrivCount,
PSID pSid; PSID pSid;
unsigned int i; unsigned int i;
NTSTATUS Status; NTSTATUS Status;
isc_result_t istatus;
int iRetVal=RTN_ERROR; /* assume error from main */ int iRetVal=RTN_ERROR; /* assume error from main */
/* /*
@@ -133,8 +135,14 @@ GetAccountPrivileges(char *name, wchar_t **PrivList, unsigned int *PrivCount,
/* /*
* Find out what groups the account belongs to * Find out what groups the account belongs to
*/ */
Status = isc_ntsecurity_getaccountgroups(name, Accounts, maxAccounts, istatus = isc_ntsecurity_getaccountgroups(name, Accounts, maxAccounts,
totalAccounts); totalAccounts);
if (istatus == ISC_R_NOMEMORY) {
return (RTN_NOMEMORY);
}
else if (istatus != ISC_R_SUCCESS) {
return (RTN_ERROR);
}
Accounts[*totalAccounts] = name; /* Add the account to the list */ Accounts[*totalAccounts] = name; /* Add the account to the list */
(*totalAccounts)++; (*totalAccounts)++;
@@ -179,10 +187,8 @@ CreateServiceAccount(char *name, char *password) {
unsigned int namelen = strlen(name); unsigned int namelen = strlen(name);
unsigned int passwdlen = strlen(password); unsigned int passwdlen = strlen(password);
wchar_t *AccountName = (wchar_t *)malloc((namelen + 1)* wchar_t AccountName[MAX_NAME_LENGTH];
sizeof(wchar_t)); wchar_t AccountPassword[MAX_NAME_LENGTH];
wchar_t *AccountPassword = (wchar_t *)malloc((passwdlen + 1)*
sizeof(wchar_t));
mbstowcs(AccountName, name, namelen + 1); mbstowcs(AccountName, name, namelen + 1);
mbstowcs(AccountPassword, password, passwdlen + 1); mbstowcs(AccountPassword, password, passwdlen + 1);
@@ -193,8 +199,8 @@ CreateServiceAccount(char *name, char *password) {
* rather than an administrator or a guest. * rather than an administrator or a guest.
*/ */
ui.usri1_name = AccountName; ui.usri1_name = (LPWSTR) &AccountName;
ui.usri1_password = AccountPassword; ui.usri1_password = (LPWSTR) &AccountPassword;
ui.usri1_priv = USER_PRIV_USER; ui.usri1_priv = USER_PRIV_USER;
ui.usri1_home_dir = NULL; ui.usri1_home_dir = NULL;
ui.usri1_comment = L"ISC BIND Service Account"; ui.usri1_comment = L"ISC BIND Service Account";
@@ -205,8 +211,6 @@ CreateServiceAccount(char *name, char *password) {
*/ */
nStatus = NetUserAdd(NULL, dwLevel, (LPBYTE)&ui, &dwError); nStatus = NetUserAdd(NULL, dwLevel, (LPBYTE)&ui, &dwError);
free(AccountPassword);
free(AccountName);
if (nStatus != NERR_Success) if (nStatus != NERR_Success)
return (FALSE); return (FALSE);
@@ -394,6 +398,9 @@ GetPrivilegesOnAccount(LSA_HANDLE PolicyHandle, PSID AccountSid,
if (found != 0) { if (found != 0) {
PrivList[*PrivCount] = PrivList[*PrivCount] =
(wchar_t *)malloc(UserRights[i].MaximumLength); (wchar_t *)malloc(UserRights[i].MaximumLength);
if (PrivList[*PrivCount] == NULL)
return (RTN_NOMEMORY);
wcsncpy(PrivList[*PrivCount], UserRights[i].Buffer, wcsncpy(PrivList[*PrivCount], UserRights[i].Buffer,
retlen); retlen);
PrivList[*PrivCount][retlen] = L'\0'; PrivList[*PrivCount][retlen] = L'\0';

View File

@@ -15,10 +15,12 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: AccountInfo.h,v 1.2 2001/09/29 00:01:44 gson Exp $ */ /* $Id: AccountInfo.h,v 1.3 2001/10/05 05:45:50 mayer Exp $ */
#define RTN_OK 0 #define RTN_OK 0
#define RTN_NOACCOUNT 1 #define RTN_NOACCOUNT 1
#define RTN_NOMEMORY 2
#define RTN_ERROR 10 #define RTN_ERROR 10
#define SE_SERVICE_LOGON_PRIV L"SeServiceLogonRight" #define SE_SERVICE_LOGON_PRIV L"SeServiceLogonRight"

View File

@@ -25,10 +25,6 @@ NULL=
NULL=nul NULL=nul
!ENDIF !ENDIF
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "BINDInstall - Win32 Release" !IF "$(CFG)" == "BINDInstall - Win32 Release"
OUTDIR=.\Release OUTDIR=.\Release
@@ -53,8 +49,42 @@ CLEAN :
"$(OUTDIR)" : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\include" /I "..\..\..\include" /I "..\..\named\win32\include" /I "..\..\..\lib\isc\win32\include" /I "..\..\..\lib\isc\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /Fp"$(INTDIR)\BINDInstall.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /TP /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\include" /I "..\..\..\include" /I "..\..\named\win32\include" /I "..\..\..\lib\isc\win32\include" /I "..\..\..\lib\isc\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /Fp"$(INTDIR)\BINDInstall.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /TP /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\BINDInstall.res" /d "NDEBUG" /d "_AFXDLL" RSC_PROJ=/l 0x409 /fo"$(INTDIR)\BINDInstall.res" /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BINDInstall.bsc" BSC32_FLAGS=/nologo /o"$(OUTDIR)\BINDInstall.bsc"
@@ -63,14 +93,14 @@ BSC32_SBRS= \
LINK32=link.exe LINK32=link.exe
LINK32_FLAGS=version.lib netapi32.lib /nologo /subsystem:windows /pdb:none /machine:I386 /out:"..\..\..\Build\Release\BINDInstall.exe" LINK32_FLAGS=version.lib netapi32.lib /nologo /subsystem:windows /pdb:none /machine:I386 /out:"..\..\..\Build\Release\BINDInstall.exe"
LINK32_OBJS= \ LINK32_OBJS= \
"$(INTDIR)\AccountInfo.obj" \
"$(INTDIR)\BINDInstall.obj" \ "$(INTDIR)\BINDInstall.obj" \
"$(INTDIR)\BINDInstallDlg.obj" \ "$(INTDIR)\BINDInstallDlg.obj" \
"$(INTDIR)\DirBrowse.obj" \ "$(INTDIR)\DirBrowse.obj" \
"$(INTDIR)\ntgroups.obj" \
"$(INTDIR)\StdAfx.obj" \ "$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\VersionInfo.obj" \ "$(INTDIR)\VersionInfo.obj" \
"$(INTDIR)\BINDInstall.res" \ "$(INTDIR)\BINDInstall.res"
"$(INTDIR)\AccountInfo.obj" \
"$(INTDIR)\ntgroups.obj"
"..\..\..\Build\Release\BINDInstall.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) "..\..\..\Build\Release\BINDInstall.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<< $(LINK32) @<<
@@ -113,43 +143,8 @@ CLEAN :
"$(OUTDIR)" : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\..\include" /I "..\..\named\win32\include" /I "..\..\..\lib\isc\win32\include" /I "..\..\..\lib\isc\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BINDInstall.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /TP /GZ /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\..\..\include" /I "..\..\named\win32\include" /I "..\..\..\lib\isc\win32\include" /I "..\..\..\lib\isc\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\BINDInstall.pch" /Yu"stdafx.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /TP /GZ /c
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\BINDInstall.res" /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BINDInstall.bsc"
BSC32_SBRS= \
"$(INTDIR)\BINDInstall.sbr" \
"$(INTDIR)\BINDInstallDlg.sbr" \
"$(INTDIR)\DirBrowse.sbr" \
"$(INTDIR)\StdAfx.sbr" \
"$(INTDIR)\VersionInfo.sbr" \
"$(INTDIR)\AccountInfo.sbr" \
"$(INTDIR)\ntgroups.sbr"
"$(OUTDIR)\BINDInstall.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
$(BSC32) @<<
$(BSC32_FLAGS) $(BSC32_SBRS)
<<
LINK32=link.exe
LINK32_FLAGS=version.lib netapi32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /out:"..\..\..\Build\Debug\BINDInstall.exe"
LINK32_OBJS= \
"$(INTDIR)\BINDInstall.obj" \
"$(INTDIR)\BINDInstallDlg.obj" \
"$(INTDIR)\DirBrowse.obj" \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\VersionInfo.obj" \
"$(INTDIR)\BINDInstall.res" \
"$(INTDIR)\AccountInfo.obj" \
"$(INTDIR)\ntgroups.obj"
"..\..\..\Build\Debug\BINDInstall.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(INTDIR)}.obj:: .c{$(INTDIR)}.obj::
$(CPP) @<< $(CPP) @<<
@@ -181,6 +176,45 @@ LINK32_OBJS= \
$(CPP_PROJ) $< $(CPP_PROJ) $<
<< <<
MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\BINDInstall.res" /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\BINDInstall.bsc"
BSC32_SBRS= \
"$(INTDIR)\AccountInfo.sbr" \
"$(INTDIR)\BINDInstall.sbr" \
"$(INTDIR)\BINDInstallDlg.sbr" \
"$(INTDIR)\DirBrowse.sbr" \
"$(INTDIR)\ntgroups.sbr" \
"$(INTDIR)\StdAfx.sbr" \
"$(INTDIR)\VersionInfo.sbr"
"$(OUTDIR)\BINDInstall.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
$(BSC32) @<<
$(BSC32_FLAGS) $(BSC32_SBRS)
<<
LINK32=link.exe
LINK32_FLAGS=version.lib netapi32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /out:"..\..\..\Build\Debug\BINDInstall.exe"
LINK32_OBJS= \
"$(INTDIR)\AccountInfo.obj" \
"$(INTDIR)\BINDInstall.obj" \
"$(INTDIR)\BINDInstallDlg.obj" \
"$(INTDIR)\DirBrowse.obj" \
"$(INTDIR)\ntgroups.obj" \
"$(INTDIR)\StdAfx.obj" \
"$(INTDIR)\VersionInfo.obj" \
"$(INTDIR)\BINDInstall.res"
"..\..\..\Build\Debug\BINDInstall.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1" !IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("BINDInstall.dep") !IF EXISTS("BINDInstall.dep")

View File

@@ -15,7 +15,7 @@
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: BINDInstallDlg.cpp,v 1.9 2001/09/26 02:22:25 mayer Exp $ */ /* $Id: BINDInstallDlg.cpp,v 1.10 2001/10/05 05:45:52 mayer Exp $ */
/* /*
* Copyright (c) 1999-2000 by Nortel Networks Corporation * Copyright (c) 1999-2000 by Nortel Networks Corporation
@@ -726,9 +726,11 @@ CBINDInstallDlg::RegisterService() {
if(m_serviceExists == TRUE) { if(m_serviceExists == TRUE) {
if(m_accountUsed == FALSE) { if(m_accountUsed == FALSE) {
UpdateService(); UpdateService();
SetItemStatus(IDC_REG_SERVICE);
return; return;
} }
else { else {
SetItemStatus(IDC_REG_SERVICE);
return; return;
} }
} }