LPDWORD lpcchBuffer)
{
DWORD dwError;
+ LPSTR lpNameBuffer;
+ CHAR szEmptyName[] = "";
TRACE("GetServiceDisplayNameA() called\n");
TRACE("%p %s %p %p\n", hSCManager,
return FALSE;
}
- if (!lpDisplayName)
- *lpcchBuffer = 0;
+ if (!lpDisplayName || *lpcchBuffer < sizeof(CHAR))
+ {
+ lpNameBuffer = szEmptyName;
+ *lpcchBuffer = sizeof(CHAR);
+ }
+ else
+ {
+ lpNameBuffer = lpDisplayName;
+ }
RpcTryExcept
{
dwError = RGetServiceDisplayNameA((SC_RPC_HANDLE)hSCManager,
lpServiceName,
- lpDisplayName,
+ lpNameBuffer,
lpcchBuffer);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
/* HACK: because of a problem with rpcrt4, rpcserver is hacked to return 6 for ERROR_SERVICE_DOES_NOT_EXIST */
dwError = ScmRpcStatusToWinError(RpcExceptionCode());
}
-
-
RpcEndExcept;
if (dwError != ERROR_SUCCESS)
LPDWORD lpcchBuffer)
{
DWORD dwError;
+ LPWSTR lpNameBuffer;
+ WCHAR szEmptyName[] = L"";
TRACE("GetServiceDisplayNameW() called\n");
return FALSE;
}
- if (!lpDisplayName)
- *lpcchBuffer = 0;
+ if (!lpDisplayName || *lpcchBuffer < sizeof(WCHAR))
+ {
+ lpNameBuffer = szEmptyName;
+ *lpcchBuffer = sizeof(WCHAR);
+ }
+ else
+ {
+ lpNameBuffer = lpDisplayName;
+ }
RpcTryExcept
{
dwError = RGetServiceDisplayNameW((SC_RPC_HANDLE)hSCManager,
lpServiceName,
- lpDisplayName,
+ lpNameBuffer,
lpcchBuffer);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
LPDWORD lpcchBuffer)
{
DWORD dwError;
+ LPSTR lpNameBuffer;
+ CHAR szEmptyName[] = "";
TRACE("GetServiceKeyNameA() called\n");
return FALSE;
}
- if (!lpDisplayName)
+ if (!lpServiceName || *lpcchBuffer < sizeof(CHAR))
{
- SetLastError(ERROR_INVALID_ADDRESS);
-
- if (!lpServiceName)
- *lpcchBuffer = 1;
- return FALSE;
+ lpNameBuffer = szEmptyName;
+ *lpcchBuffer = sizeof(CHAR);
+ }
+ else
+ {
+ lpNameBuffer = lpServiceName;
}
-
- if (!lpServiceName)
- *lpcchBuffer = 0;
RpcTryExcept
{
dwError = RGetServiceKeyNameA((SC_RPC_HANDLE)hSCManager,
lpDisplayName,
- lpServiceName,
+ lpNameBuffer,
lpcchBuffer);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
LPDWORD lpcchBuffer)
{
DWORD dwError;
+ LPWSTR lpNameBuffer;
+ WCHAR szEmptyName[] = L"";
TRACE("GetServiceKeyNameW() called\n");
return FALSE;
}
- if (!lpDisplayName)
+ if (!lpServiceName || *lpcchBuffer < sizeof(WCHAR))
{
- SetLastError(ERROR_INVALID_ADDRESS);
-
- if (!lpServiceName)
- *lpcchBuffer = 1;
- return FALSE;
+ lpNameBuffer = szEmptyName;
+ *lpcchBuffer = sizeof(WCHAR);
+ }
+ else
+ {
+ lpNameBuffer = lpServiceName;
}
-
- if (!lpServiceName)
- *lpcchBuffer = 0;
RpcTryExcept
{
dwError = RGetServiceKeyNameW((SC_RPC_HANDLE)hSCManager,
lpDisplayName,
- lpServiceName,
+ lpNameBuffer,
lpcchBuffer);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)