The strdupAW() function in advapi32_misc.h behaves exactly the same as SERV_dup(). Switching calls to strdupAW() will reduce the complexity when moving the services RPC functions into sechost by allowing moving the service.c file with few changes.
Signed-off-by: Micah N Gorrell mgorrell@codeweavers.com --- dlls/advapi32/advapi32_misc.h | 1 - dlls/advapi32/eventlog.c | 12 +++---- dlls/advapi32/security.c | 22 ++++++------- dlls/advapi32/service.c | 60 ++++++++++++----------------------- 4 files changed, 38 insertions(+), 57 deletions(-)
diff --git a/dlls/advapi32/advapi32_misc.h b/dlls/advapi32/advapi32_misc.h index 77b56420ba..65bd8aa852 100644 --- a/dlls/advapi32/advapi32_misc.h +++ b/dlls/advapi32/advapi32_misc.h @@ -31,7 +31,6 @@ BOOL ADVAPI_GetComputerSid(PSID sid) DECLSPEC_HIDDEN;
BOOL lookup_local_wellknown_name(const LSA_UNICODE_STRING*, PSID, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE, BOOL*) DECLSPEC_HIDDEN; BOOL lookup_local_user_name(const LSA_UNICODE_STRING*, PSID, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE, BOOL*) DECLSPEC_HIDDEN; -WCHAR *SERV_dup(const char *str) DECLSPEC_HIDDEN; const WCHAR *get_wellknown_privilege_name(const LUID *) DECLSPEC_HIDDEN;
/* memory allocation functions */ diff --git a/dlls/advapi32/eventlog.c b/dlls/advapi32/eventlog.c index 6f8d26b516..4349408a00 100644 --- a/dlls/advapi32/eventlog.c +++ b/dlls/advapi32/eventlog.c @@ -57,7 +57,7 @@ BOOL WINAPI BackupEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName ) LPWSTR backupW; BOOL ret;
- backupW = SERV_dup(lpBackupFileName); + backupW = strdupAW(lpBackupFileName); ret = BackupEventLogW(hEventLog, backupW); heap_free(backupW);
@@ -114,7 +114,7 @@ BOOL WINAPI ClearEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName ) LPWSTR backupW; BOOL ret;
- backupW = SERV_dup(lpBackupFileName); + backupW = strdupAW(lpBackupFileName); ret = ClearEventLogW(hEventLog, backupW); heap_free(backupW);
@@ -430,8 +430,8 @@ HANDLE WINAPI OpenBackupEventLogA( LPCSTR lpUNCServerName, LPCSTR lpFileName ) LPWSTR uncnameW, filenameW; HANDLE handle;
- uncnameW = SERV_dup(lpUNCServerName); - filenameW = SERV_dup(lpFileName); + uncnameW = strdupAW(lpUNCServerName); + filenameW = strdupAW(lpFileName); handle = OpenBackupEventLogW(uncnameW, filenameW); heap_free(uncnameW); heap_free(filenameW); @@ -489,8 +489,8 @@ HANDLE WINAPI OpenEventLogA( LPCSTR uncname, LPCSTR source ) LPWSTR uncnameW, sourceW; HANDLE handle;
- uncnameW = SERV_dup(uncname); - sourceW = SERV_dup(source); + uncnameW = strdupAW(uncname); + sourceW = strdupAW(source); handle = OpenEventLogW(uncnameW, sourceW); heap_free(uncnameW); heap_free(sourceW); diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index 74eda93282..326058e2f7 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -1020,7 +1020,7 @@ GetFileSecurityA( LPCSTR lpFileName, BOOL r; LPWSTR name;
- name = SERV_dup(lpFileName); + name = strdupAW(lpFileName); r = GetFileSecurityW( name, RequestedInformation, pSecurityDescriptor, nLength, lpnLengthNeeded ); heap_free( name ); @@ -1049,7 +1049,7 @@ LookupAccountSidA( DWORD accountSizeW = *accountSize; DWORD domainSizeW = *domainSize;
- systemW = SERV_dup(system); + systemW = strdupAW(system); if (account) accountW = heap_alloc( accountSizeW * sizeof(WCHAR) ); if (domain) @@ -1303,7 +1303,7 @@ BOOL WINAPI SetFileSecurityA( LPCSTR lpFileName, BOOL r; LPWSTR name;
- name = SERV_dup(lpFileName); + name = strdupAW(lpFileName); r = SetFileSecurityW( name, RequestedInformation, pSecurityDescriptor ); heap_free( name );
@@ -2251,7 +2251,7 @@ static DWORD trustee_name_A_to_W(TRUSTEE_FORM form, char *trustee_nameA, WCHAR * { case TRUSTEE_IS_NAME: { - *ptrustee_nameW = SERV_dup(trustee_nameA); + *ptrustee_nameW = strdupAW(trustee_nameA); return ERROR_SUCCESS; } case TRUSTEE_IS_OBJECTS_AND_NAME: @@ -2266,9 +2266,9 @@ static DWORD trustee_name_A_to_W(TRUSTEE_FORM form, char *trustee_nameA, WCHAR *
objW->ObjectsPresent = objA->ObjectsPresent; objW->ObjectType = objA->ObjectType; - objW->ObjectTypeName = SERV_dup(objA->ObjectTypeName); - objW->InheritedObjectTypeName = SERV_dup(objA->InheritedObjectTypeName); - objW->ptstrName = SERV_dup(objA->ptstrName); + objW->ObjectTypeName = strdupAW(objA->ObjectTypeName); + objW->InheritedObjectTypeName = strdupAW(objA->InheritedObjectTypeName); + objW->ptstrName = strdupAW(objA->ptstrName); }
*ptrustee_nameW = (WCHAR *)objW; @@ -2648,7 +2648,7 @@ DWORD WINAPI SetNamedSecurityInfoA(LPSTR pObjectName, TRACE("%s %d %d %p %p %p %p\n", debugstr_a(pObjectName), ObjectType, SecurityInfo, psidOwner, psidGroup, pDacl, pSacl);
- wstr = SERV_dup(pObjectName); + wstr = strdupAW(pObjectName); r = SetNamedSecurityInfoW( wstr, ObjectType, SecurityInfo, psidOwner, psidGroup, pDacl, pSacl );
@@ -3323,7 +3323,7 @@ BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorA( if(!StringSecurityDescriptor) return FALSE;
- StringSecurityDescriptorW = SERV_dup(StringSecurityDescriptor); + StringSecurityDescriptorW = strdupAW(StringSecurityDescriptor); ret = ConvertStringSecurityDescriptorToSecurityDescriptorW(StringSecurityDescriptorW, StringSDRevision, SecurityDescriptor, SecurityDescriptorSize); @@ -3833,7 +3833,7 @@ BOOL WINAPI ConvertStringSidToSidA(LPCSTR StringSid, PSID* Sid) SetLastError(ERROR_INVALID_PARAMETER); else { - WCHAR *wStringSid = SERV_dup(StringSid); + WCHAR *wStringSid = strdupAW(StringSid); bret = ConvertStringSidToSidW(wStringSid, Sid); heap_free(wStringSid); } @@ -4096,7 +4096,7 @@ DWORD WINAPI GetNamedSecurityInfoA(LPSTR pObjectName, TRACE("%s %d %d %p %p %p %p %p\n", pObjectName, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor);
- wstr = SERV_dup(pObjectName); + wstr = strdupAW(pObjectName); r = GetNamedSecurityInfoW( wstr, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor );
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 2781a12823..3bf6fdfd47 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -113,24 +113,6 @@ static BOOL stop_service;
extern HANDLE CDECL __wine_make_process_system(void);
-/****************************************************************************** - * String management functions (same behaviour as strdup) - * NOTE: the caller of those functions is responsible for calling HeapFree - * in order to release the memory allocated by those functions. - */ -LPWSTR SERV_dup( LPCSTR str ) -{ - UINT len; - LPWSTR wstr; - - if( !str ) - return NULL; - len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 ); - wstr = heap_alloc( len*sizeof (WCHAR) ); - MultiByteToWideChar( CP_ACP, 0, str, -1, wstr, len ); - return wstr; -} - static inline LPWSTR SERV_dupmulti(LPCSTR str) { UINT len = 0, n = 0; @@ -884,8 +866,8 @@ SC_HANDLE WINAPI OpenSCManagerA( LPCSTR lpMachineName, LPCSTR lpDatabaseName, LPWSTR machineW, databaseW; SC_HANDLE ret;
- machineW = SERV_dup(lpMachineName); - databaseW = SERV_dup(lpDatabaseName); + machineW = strdupAW(lpMachineName); + databaseW = strdupAW(lpDatabaseName); ret = OpenSCManagerW(machineW, databaseW, dwDesiredAccess); heap_free(databaseW); heap_free(machineW); @@ -1037,7 +1019,7 @@ SC_HANDLE WINAPI OpenServiceA( SC_HANDLE hSCManager, LPCSTR lpServiceName,
TRACE("%p %s 0x%08x\n", hSCManager, debugstr_a(lpServiceName), dwDesiredAccess);
- lpServiceNameW = SERV_dup(lpServiceName); + lpServiceNameW = strdupAW(lpServiceName); ret = OpenServiceW( hSCManager, lpServiceNameW, dwDesiredAccess); heap_free(lpServiceNameW); return ret; @@ -1171,13 +1153,13 @@ CreateServiceA( SC_HANDLE hSCManager, LPCSTR lpServiceName, TRACE("%p %s %s\n", hSCManager, debugstr_a(lpServiceName), debugstr_a(lpDisplayName));
- lpServiceNameW = SERV_dup( lpServiceName ); - lpDisplayNameW = SERV_dup( lpDisplayName ); - lpBinaryPathNameW = SERV_dup( lpBinaryPathName ); - lpLoadOrderGroupW = SERV_dup( lpLoadOrderGroup ); + lpServiceNameW = strdupAW( lpServiceName ); + lpDisplayNameW = strdupAW( lpDisplayName ); + lpBinaryPathNameW = strdupAW( lpBinaryPathName ); + lpLoadOrderGroupW = strdupAW( lpLoadOrderGroup ); lpDependenciesW = SERV_dupmulti( lpDependencies ); - lpServiceStartNameW = SERV_dup( lpServiceStartName ); - lpPasswordW = SERV_dup( lpPassword ); + lpServiceStartNameW = strdupAW( lpServiceStartName ); + lpPasswordW = strdupAW( lpPassword );
r = CreateServiceW( hSCManager, lpServiceNameW, lpDisplayNameW, dwDesiredAccess, dwServiceType, dwStartType, dwErrorControl, @@ -1269,7 +1251,7 @@ BOOL WINAPI StartServiceA( SC_HANDLE hService, DWORD dwNumServiceArgs, lpwstr = heap_alloc( dwNumServiceArgs*sizeof(LPWSTR) );
for(i=0; i<dwNumServiceArgs; i++) - lpwstr[i]=SERV_dup(lpServiceArgVectors[i]); + lpwstr[i]=strdupAW(lpServiceArgVectors[i]);
r = StartServiceW(hService, dwNumServiceArgs, (LPCWSTR *)lpwstr);
@@ -2108,7 +2090,7 @@ BOOL WINAPI GetServiceKeyNameA( SC_HANDLE hSCManager, LPCSTR lpDisplayName, TRACE("%p %s %p %p\n", hSCManager, debugstr_a(lpDisplayName), lpServiceName, lpcchBuffer);
- lpDisplayNameW = SERV_dup(lpDisplayName); + lpDisplayNameW = strdupAW(lpDisplayName); if (lpServiceName) lpServiceNameW = heap_alloc(*lpcchBuffer * sizeof(WCHAR)); else @@ -2231,7 +2213,7 @@ BOOL WINAPI GetServiceDisplayNameA( SC_HANDLE hSCManager, LPCSTR lpServiceName, TRACE("%p %s %p %p\n", hSCManager, debugstr_a(lpServiceName), lpDisplayName, lpcchBuffer);
- lpServiceNameW = SERV_dup(lpServiceName); + lpServiceNameW = strdupAW(lpServiceName); if (lpDisplayName) lpDisplayNameW = heap_alloc(*lpcchBuffer * sizeof(WCHAR)); else @@ -2374,12 +2356,12 @@ BOOL WINAPI ChangeServiceConfigA( SC_HANDLE hService, DWORD dwServiceType, lpdwTagId, lpDependencies, debugstr_a(lpServiceStartName), debugstr_a(lpPassword), debugstr_a(lpDisplayName) );
- wBinaryPathName = SERV_dup( lpBinaryPathName ); - wLoadOrderGroup = SERV_dup( lpLoadOrderGroup ); + wBinaryPathName = strdupAW( lpBinaryPathName ); + wLoadOrderGroup = strdupAW( lpLoadOrderGroup ); wDependencies = SERV_dupmulti( lpDependencies ); - wServiceStartName = SERV_dup( lpServiceStartName ); - wPassword = SERV_dup( lpPassword ); - wDisplayName = SERV_dup( lpDisplayName ); + wServiceStartName = strdupAW( lpServiceStartName ); + wPassword = strdupAW( lpPassword ); + wDisplayName = strdupAW( lpDisplayName );
r = ChangeServiceConfigW( hService, dwServiceType, dwStartType, dwErrorControl, wBinaryPathName, @@ -2411,7 +2393,7 @@ BOOL WINAPI ChangeServiceConfig2A( SC_HANDLE hService, DWORD dwInfoLevel, LPSERVICE_DESCRIPTIONA sd = lpInfo; SERVICE_DESCRIPTIONW sdw;
- sdw.lpDescription = SERV_dup( sd->lpDescription ); + sdw.lpDescription = strdupAW( sd->lpDescription );
r = ChangeServiceConfig2W( hService, dwInfoLevel, &sdw );
@@ -2423,8 +2405,8 @@ BOOL WINAPI ChangeServiceConfig2A( SC_HANDLE hService, DWORD dwInfoLevel, SERVICE_FAILURE_ACTIONSW faw;
faw.dwResetPeriod = fa->dwResetPeriod; - faw.lpRebootMsg = SERV_dup( fa->lpRebootMsg ); - faw.lpCommand = SERV_dup( fa->lpCommand ); + faw.lpRebootMsg = strdupAW( fa->lpRebootMsg ); + faw.lpCommand = strdupAW( fa->lpCommand ); faw.cActions = fa->cActions; faw.lpsaActions = fa->lpsaActions;
@@ -2589,7 +2571,7 @@ SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA( LPCSTR name, LPHANDL LPWSTR nameW; SERVICE_STATUS_HANDLE ret;
- nameW = SERV_dup(name); + nameW = strdupAW(name); ret = RegisterServiceCtrlHandlerExW( nameW, handler, context ); heap_free( nameW ); return ret;