Index: dll/win32/advapi32/service/scm.c =================================================================== --- dll/win32/advapi32/service/scm.c (revision 71918) +++ dll/win32/advapi32/service/scm.c (working copy) @@ -326,7 +326,7 @@ /* FIXME: Encrypt the password */ lpEncryptedPassword = (LPBYTE)lpPasswordW; - dwPasswordLength = (DWORD)(lpPasswordW ? (wcslen(lpPasswordW) + 1) * sizeof(WCHAR) : 0); + dwPasswordLength = (wcslen(lpPasswordW) + 1) * sizeof(WCHAR); } RpcTryExcept @@ -407,9 +407,12 @@ dwDependenciesLength *= sizeof(WCHAR); } - /* FIXME: Encrypt the password */ - lpEncryptedPassword = (LPBYTE)lpPassword; - dwPasswordLength = (lpPassword ? (wcslen(lpPassword) + 1) * sizeof(WCHAR) : 0); + if (lpPassword != NULL) + { + /* FIXME: Encrypt the password */ + lpEncryptedPassword = (LPBYTE)lpPassword; + dwPasswordLength = (wcslen(lpPassword) + 1) * sizeof(WCHAR); + } RpcTryExcept { @@ -619,7 +622,7 @@ /* FIXME: Encrypt the password */ lpEncryptedPassword = (LPBYTE)lpPasswordW; - dwPasswordLength = (DWORD)(lpPasswordW ? (wcslen(lpPasswordW) + 1) * sizeof(WCHAR) : 0); + dwPasswordLength = (wcslen(lpPasswordW) + 1) * sizeof(WCHAR); } RpcTryExcept @@ -714,9 +717,12 @@ dwDependenciesLength *= sizeof(WCHAR); } - /* FIXME: Encrypt the password */ - lpEncryptedPassword = (LPBYTE)lpPassword; - dwPasswordLength = (DWORD)(lpPassword ? (wcslen(lpPassword) + 1) * sizeof(WCHAR) : 0); + if (lpPassword != NULL) + { + /* FIXME: Encrypt the password */ + lpEncryptedPassword = (LPBYTE)lpPassword; + dwPasswordLength = (wcslen(lpPassword) + 1) * sizeof(WCHAR); + } RpcTryExcept {