hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cnaur...@apache.org
Subject [1/3] hadoop git commit: HADOOP-11639. Clean up Windows native code compilation warnings related to Windows Secure Container Executor. Contributed by Remus Rusanu.
Date Fri, 27 Mar 2015 22:14:58 GMT
Repository: hadoop
Updated Branches:
  refs/heads/branch-2 853cc0466 -> eb7068c2c
  refs/heads/branch-2.7 ae6a76d4d -> b849a519c
  refs/heads/trunk 05499b109 -> 3836ad6c0


HADOOP-11639. Clean up Windows native code compilation warnings related to Windows Secure
Container Executor. Contributed by Remus Rusanu.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/3836ad6c
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/3836ad6c
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/3836ad6c

Branch: refs/heads/trunk
Commit: 3836ad6c0b3331cf60286d134157c13985908230
Parents: 05499b1
Author: cnauroth <cnauroth@apache.org>
Authored: Fri Mar 27 15:03:41 2015 -0700
Committer: cnauroth <cnauroth@apache.org>
Committed: Fri Mar 27 15:03:41 2015 -0700

----------------------------------------------------------------------
 hadoop-common-project/hadoop-common/CHANGES.txt |  3 ++
 .../windows_secure_container_executor.c         |  2 +-
 .../hadoop-common/src/main/winutils/client.c    | 17 ++++------
 .../hadoop-common/src/main/winutils/config.cpp  |  2 +-
 .../src/main/winutils/include/winutils.h        | 24 +++++++++++---
 .../src/main/winutils/libwinutils.c             | 18 +++++------
 .../hadoop-common/src/main/winutils/service.c   | 34 ++++++++++----------
 .../src/main/winutils/systeminfo.c              |  3 ++
 .../hadoop-common/src/main/winutils/task.c      | 28 +++++++++-------
 9 files changed, 76 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index febbf6b..8643901 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -1172,6 +1172,9 @@ Release 2.7.0 - UNRELEASED
     HADOOP-11691. X86 build of libwinutils is broken.
     (Kiran Kumar M R via cnauroth)
 
+    HADOOP-11639. Clean up Windows native code compilation warnings related to
+    Windows Secure Container Executor. (Remus Rusanu via cnauroth)
+
 Release 2.6.1 - UNRELEASED
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/yarn/server/nodemanager/windows_secure_container_executor.c
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/yarn/server/nodemanager/windows_secure_container_executor.c
b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/yarn/server/nodemanager/windows_secure_container_executor.c
index 7e65065..b37359d 100644
--- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/yarn/server/nodemanager/windows_secure_container_executor.c
+++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/yarn/server/nodemanager/windows_secure_container_executor.c
@@ -409,7 +409,7 @@ Java_org_apache_hadoop_yarn_server_nodemanager_WindowsSecureContainerExecutor_00
 
 done:
   if (path)     (*env)->ReleaseStringChars(env, jpath, path);
-  return hFile;
+  return (jlong) hFile;
 #endif
 }
 

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/winutils/client.c
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/winutils/client.c b/hadoop-common-project/hadoop-common/src/main/winutils/client.c
index 047bfb5..e3a2c37 100644
--- a/hadoop-common-project/hadoop-common/src/main/winutils/client.c
+++ b/hadoop-common-project/hadoop-common/src/main/winutils/client.c
@@ -28,8 +28,6 @@ static ACCESS_MASK CLIENT_MASK = 1;
 VOID ReportClientError(LPWSTR lpszLocation, DWORD dwError) {
   LPWSTR      debugMsg = NULL;
   int         len;
-  WCHAR       hexError[32];
-  HRESULT     hr;
 
   if (IsDebuggerPresent()) {
     len = FormatMessageW(
@@ -49,7 +47,6 @@ DWORD PrepareRpcBindingHandle(
   DWORD       dwError = EXIT_FAILURE;
   RPC_STATUS  status;
   LPWSTR      lpszStringBinding    = NULL;
-  ULONG       ulCode;
   RPC_SECURITY_QOS_V3 qos;
   SID_IDENTIFIER_AUTHORITY authNT = SECURITY_NT_AUTHORITY;
   BOOL rpcBindingInit = FALSE;
@@ -104,7 +101,7 @@ DWORD PrepareRpcBindingHandle(
                   RPC_C_AUTHN_WINNT,              // AuthnSvc
                   NULL,                           // AuthnIdentity (self)
                   RPC_C_AUTHZ_NONE,               // AuthzSvc
-                  &qos);
+                  (RPC_SECURITY_QOS*) &qos);
   if (RPC_S_OK != status) {
     ReportClientError(L"RpcBindingSetAuthInfoEx", status);
     dwError = status;
@@ -375,7 +372,7 @@ DWORD RpcCall_WinutilsCreateFile(
   RpcEndExcept;
 
   if (ERROR_SUCCESS == dwError) {
-    *hFile = response->hFile;
+    *hFile = (HANDLE) response->hFile;
   }
 
 done:
@@ -479,11 +476,11 @@ DWORD RpcCall_TaskCreateAsUser(
     RpcEndExcept;
 
     if (ERROR_SUCCESS == dwError) {
-      *phProcess = response->hProcess;
-      *phThread = response->hThread;
-      *phStdIn = response->hStdIn;
-      *phStdOut = response->hStdOut;
-      *phStdErr = response->hStdErr;
+      *phProcess = (HANDLE) response->hProcess;
+      *phThread = (HANDLE) response->hThread;
+      *phStdIn = (HANDLE) response->hStdIn;
+      *phStdOut = (HANDLE) response->hStdOut;
+      *phStdErr = (HANDLE) response->hStdErr;
     }
 
 done:

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/winutils/config.cpp
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/winutils/config.cpp b/hadoop-common-project/hadoop-common/src/main/winutils/config.cpp
index 1e07b7f..74be689 100644
--- a/hadoop-common-project/hadoop-common/src/main/winutils/config.cpp
+++ b/hadoop-common-project/hadoop-common/src/main/winutils/config.cpp
@@ -18,7 +18,7 @@
 #include "winutils.h"
 #include <string.h>
 #include <stdlib.h>
-#import "msxml6.dll"
+#import "msxml6.dll" exclude("ISequentialStream", "_FILETIME")
 
 #define ERROR_CHECK_HRESULT_DONE(hr, message)                               \
   if (FAILED(hr))  {                                                        \

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/winutils/include/winutils.h
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/winutils/include/winutils.h b/hadoop-common-project/hadoop-common/src/main/winutils/include/winutils.h
index f72802c..6c33b5a 100644
--- a/hadoop-common-project/hadoop-common/src/main/winutils/include/winutils.h
+++ b/hadoop-common-project/hadoop-common/src/main/winutils/include/winutils.h
@@ -248,8 +248,8 @@ DWORD BuildServiceSecurityDescriptor(
   __out PSECURITY_DESCRIPTOR*         pSD);
 
 DWORD AddNodeManagerAndUserACEsToObject(
-  __in HANDLE hObject,
-  __in LPWSTR user,
+  __in HANDLE hProcess,
+  __in LPCWSTR user,
   __in ACCESS_MASK accessMask);
 
 
@@ -283,15 +283,29 @@ DWORD RpcCall_WinutilsCreateFile(
   __out HANDLE* hFile);
 
 DWORD RpcCall_WinutilsMoveFile(
-  __in LPCWSTR    sourcePath, 
-  __in LPCWSTR    destinationPath,
-  __in BOOL       replaceExisting);
+  __in int operation,
+  __in LPCWSTR sourcePath, 
+  __in LPCWSTR destinationPath,
+  __in BOOL replaceExisting);
+
 
 DWORD RpcCall_WinutilsDeletePath(
   __in LPCWSTR    path,
   __in BOOL       isDir,
   __out BOOL*     pDeleted);
 
+DWORD RpcCall_WinutilsChown(
+  __in LPCWSTR filePath, 
+  __in_opt LPCWSTR ownerName, 
+  __in_opt LPCWSTR groupName);
+
+DWORD RpcCall_WinutilsMkDir(
+  __in LPCWSTR filePath);
+
+DWORD RpcCall_WinutilsChmod(
+  __in LPCWSTR filePath, 
+  __in int mode);
+
 #ifdef __cplusplus
 }
 #endif

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/winutils/libwinutils.c
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/winutils/libwinutils.c b/hadoop-common-project/hadoop-common/src/main/winutils/libwinutils.c
index 98fe3ab..676f1b2 100644
--- a/hadoop-common-project/hadoop-common/src/main/winutils/libwinutils.c
+++ b/hadoop-common-project/hadoop-common/src/main/winutils/libwinutils.c
@@ -2596,7 +2596,7 @@ LPCWSTR GetSystemTimeString() {
   QueryPerformanceFrequency(&frequency);
 
   qpc = (double) counter.QuadPart / (double) frequency.QuadPart;
-  subSec = ((qpc - (long)qpc) * 1000000);
+  subSec = (int)((qpc - (long)qpc) * 1000000);
 
   hr = StringCbPrintf(buffer, sizeof(buffer), L"%02d:%02d:%02d.%06d", 
     (int)systime.wHour, (int)systime.wMinute, (int)systime.wSecond, (int)subSec);
@@ -2619,7 +2619,7 @@ done:
 //  Native debugger: windbg, ntsd, cdb, visual studio
 //
 VOID LogDebugMessage(LPCWSTR format, ...) {
-  LPWSTR buffer[8192];
+  wchar_t buffer[8192];
   va_list args;
   HRESULT hr;
 
@@ -2657,8 +2657,8 @@ DWORD SplitStringIgnoreSpaceW(
   size_t tokenCount = 0;
   size_t crtSource;
   size_t crtToken = 0;
-  WCHAR* lpwszTokenStart = NULL;
-  WCHAR* lpwszTokenEnd = NULL;
+  const WCHAR* lpwszTokenStart = NULL;
+  const WCHAR* lpwszTokenEnd = NULL;
   WCHAR* lpwszBuffer = NULL;
   size_t tokenLength = 0;
   size_t cchBufferLength = 0;
@@ -2849,7 +2849,7 @@ DWORD BuildServiceSecurityDescriptor(
     }
   }
 
-  pTokenGroup = (PTOKEN_USER) LocalAlloc(LPTR, dwBufferSize);
+  pTokenGroup = (PTOKEN_PRIMARY_GROUP) LocalAlloc(LPTR, dwBufferSize);
   if (NULL == pTokenGroup) {
     dwError = GetLastError();
     LogDebugMessage(L"LocalAlloc:pTokenGroup: %d\n", dwError);
@@ -2870,11 +2870,11 @@ DWORD BuildServiceSecurityDescriptor(
 
   owner.TrusteeForm = TRUSTEE_IS_SID;
   owner.TrusteeType = TRUSTEE_IS_UNKNOWN;
-  owner.ptstrName = (LPCWSTR) pOwner;
+  owner.ptstrName = (LPWSTR) pOwner;
 
   group.TrusteeForm = TRUSTEE_IS_SID;
   group.TrusteeType = TRUSTEE_IS_UNKNOWN;
-  group.ptstrName = (LPCWSTR) pTokenGroup->PrimaryGroup;
+  group.ptstrName = (LPWSTR) pTokenGroup->PrimaryGroup;
 
   eas = (EXPLICIT_ACCESS*) LocalAlloc(LPTR, sizeof(EXPLICIT_ACCESS) * (grantSidCount + denySidCount));
   if (NULL == eas) {
@@ -2890,7 +2890,7 @@ DWORD BuildServiceSecurityDescriptor(
     eas[crt].grfInheritance = NO_INHERITANCE;
     eas[crt].Trustee.TrusteeForm = TRUSTEE_IS_SID;
     eas[crt].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
-    eas[crt].Trustee.ptstrName = (LPCWSTR) pGrantSids[crt];
+    eas[crt].Trustee.ptstrName = (LPWSTR) pGrantSids[crt];
     eas[crt].Trustee.pMultipleTrustee = NULL;
     eas[crt].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
   }
@@ -2902,7 +2902,7 @@ DWORD BuildServiceSecurityDescriptor(
     eas[crt].grfInheritance = NO_INHERITANCE;
     eas[crt].Trustee.TrusteeForm = TRUSTEE_IS_SID;
     eas[crt].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
-    eas[crt].Trustee.ptstrName = (LPCWSTR) pDenySids[crt - grantSidCount];
+    eas[crt].Trustee.ptstrName = (LPWSTR) pDenySids[crt - grantSidCount];
     eas[crt].Trustee.pMultipleTrustee = NULL;
     eas[crt].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
   }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/winutils/service.c
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/winutils/service.c b/hadoop-common-project/hadoop-common/src/main/winutils/service.c
index ba35003..fca5dbc 100644
--- a/hadoop-common-project/hadoop-common/src/main/winutils/service.c
+++ b/hadoop-common-project/hadoop-common/src/main/winutils/service.c
@@ -206,7 +206,7 @@ DWORD ValidateConfigurationFile() {
   BOOL daclPresent = FALSE;
   BOOL daclDefaulted = FALSE;
   PACL pDacl = NULL;
-  unsigned int crt = 0, crtSid = 0;
+  DWORD crt = 0;
   WELL_KNOWN_SID_TYPE allowedSidTypes[] = {
     WinLocalSystemSid,
     WinBuiltinAdministratorsSid};
@@ -214,7 +214,6 @@ DWORD ValidateConfigurationFile() {
   DWORD cbSid = SECURITY_MAX_SID_SIZE;
   PSID* allowedSids = NULL; 
   int cAllowedSids = 0;
-  BOOL isSidDefaulted;
   PSID sidOwner = NULL;
   PSID sidGroup = NULL;
 
@@ -324,7 +323,7 @@ DWORD InitJobName() {
   int       crt = 0;
 
   // Services can be restarted
-  if (gJobName) LocalFree(gJobName);
+  if (gJobName) LocalFree((HLOCAL)gJobName);
   gJobName = NULL;
     
   dwError = GetConfigValue(
@@ -382,7 +381,7 @@ DWORD InitLocalDirs() {
   }
 
 done:
-  if (value) LocalFree(value);
+  if (value) LocalFree((HLOCAL)value);
   
   return dwError;
 }
@@ -437,7 +436,7 @@ DWORD ValidateLocalPath(LPCWSTR lpszPath) {
       gLocalDirs[crt], gCchLocalDir[crt],
       NULL, // lpVersionInformation
       NULL, // lpReserved
-      NULL); // lParam
+      (LPARAM) NULL); // lParam
     
     if (0 == compareResult) {
       dwError = GetLastError();
@@ -500,7 +499,7 @@ done:
 // Description:
 //  Service main entry point.
 //
-VOID WINAPI SvcMain() {
+VOID WINAPI SvcMain(DWORD dwArg, LPTSTR* lpszArgv) {
   DWORD dwError = ERROR_SUCCESS;
 
   gSvcStatusHandle = RegisterServiceCtrlHandler( 
@@ -693,15 +692,15 @@ done:
 //
 DWORD AuthInit() {
   DWORD       dwError = ERROR_SUCCESS;
-  int         count = 0;
-  int         crt  = 0;
+  size_t      count = 0;
+  size_t      crt  = 0;
   size_t      len = 0;
   LPCWSTR     value = NULL;
   WCHAR**     tokens = NULL;
   LPWSTR      lpszSD = NULL;
   ULONG       cchSD = 0;
   DWORD       dwBufferSize = 0;
-  int         allowedCount = 0;
+  size_t      allowedCount = 0;
   PSID*       allowedSids = NULL;
   
 
@@ -737,7 +736,7 @@ DWORD AuthInit() {
   
 done:
   if (lpszSD) LocalFree(lpszSD);
-  if (value) LocalFree(value);
+  if (value) LocalFree((HLOCAL)value);
   if (tokens) LocalFree(tokens);
   return dwError;
 }
@@ -1167,11 +1166,12 @@ error_status_t WinutilsCreateProcessAsUser(
   // Note that there are no more API calls, only assignments. A failure could occur only
if
   // foced (process kill) or hardware error (faulty memory, processort bit flip etc).
 
-  (*response)->hProcess = hDuplicateProcess;
-  (*response)->hThread = hDuplicateThread;
-  (*response)->hStdIn = hDuplicateStdIn;
-  (*response)->hStdOut = hDuplicateStdOut;
-  (*response)->hStdErr = hDuplicateStdErr;
+  // as MIDL has no 'HANDLE' type, the (LONG_PTR) is used instead
+  (*response)->hProcess = (LONG_PTR)hDuplicateProcess;
+  (*response)->hThread = (LONG_PTR)hDuplicateThread;
+  (*response)->hStdIn = (LONG_PTR)hDuplicateStdIn;
+  (*response)->hStdOut = (LONG_PTR)hDuplicateStdOut;
+  (*response)->hStdErr = (LONG_PTR)hDuplicateStdErr;
 
   fMustCleanupProcess = FALSE;
   
@@ -1276,7 +1276,8 @@ error_status_t WinutilsCreateFile(
     goto done;
   }
 
-  (*response)->hFile = hDuplicateFile;
+  // As MIDL has no 'HANDLE' type, (LONG_PTR) is used instead
+  (*response)->hFile = (LONG_PTR)hDuplicateFile;
   hDuplicateFile = INVALID_HANDLE_VALUE;
 
 done:
@@ -1302,7 +1303,6 @@ error_status_t WinutilsKillTask(
     /* [in] */ handle_t IDL_handle,
     /* [in] */ KILLTASK_REQUEST *request) {
   DWORD dwError = ERROR_SUCCESS;
-  HRESULT hr;
   WCHAR bufferName[MAX_PATH];
 
   dwError = GetSecureJobObjectName(request->taskName, MAX_PATH, bufferName);

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/winutils/systeminfo.c
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/winutils/systeminfo.c b/hadoop-common-project/hadoop-common/src/main/winutils/systeminfo.c
index 7fce424..48f03ed 100644
--- a/hadoop-common-project/hadoop-common/src/main/winutils/systeminfo.c
+++ b/hadoop-common-project/hadoop-common/src/main/winutils/systeminfo.c
@@ -19,6 +19,9 @@
 #include <psapi.h>
 #include <PowrProf.h>
 
+#ifdef PSAPI_VERSION
+#undef PSAPI_VERSION
+#endif
 #define PSAPI_VERSION 1
 #pragma comment(lib, "psapi.lib")
 #pragma comment(lib, "Powrprof.lib")

http://git-wip-us.apache.org/repos/asf/hadoop/blob/3836ad6c/hadoop-common-project/hadoop-common/src/main/winutils/task.c
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/winutils/task.c b/hadoop-common-project/hadoop-common/src/main/winutils/task.c
index 37c6ca1..057fd8a 100644
--- a/hadoop-common-project/hadoop-common/src/main/winutils/task.c
+++ b/hadoop-common-project/hadoop-common/src/main/winutils/task.c
@@ -22,6 +22,9 @@
 #include <authz.h>
 #include <sddl.h>
 
+#ifdef PSAPI_VERSION
+#undef PSAPI_VERSION
+#endif
 #define PSAPI_VERSION 1
 #pragma comment(lib, "psapi.lib")
 
@@ -231,7 +234,7 @@ DWORD BuildImpersonateSecurityDescriptor(__out PSECURITY_DESCRIPTOR* ppSD)
{
   LocalFree(tokens);
   tokens = NULL;
 
-  LocalFree(value);
+  LocalFree((HLOCAL)value);
   value = NULL;
   
   dwError = GetConfigValue(wsceConfigRelativePath, NM_WSCE_IMPERSONATE_DENIED, &len,
&value); 
@@ -298,18 +301,18 @@ done:
 //
 DWORD AddNodeManagerAndUserACEsToObject(
   __in HANDLE hObject,
-  __in LPWSTR user,
+  __in LPCWSTR user,
   __in ACCESS_MASK accessMask) {
 
   DWORD dwError = ERROR_SUCCESS;
-  int         countTokens = 0;
+  size_t      countTokens = 0;
   size_t      len = 0;
   LPCWSTR     value = NULL;
   WCHAR**     tokens = NULL;
-  int         crt = 0;
+  DWORD       crt = 0;
   PACL        pDacl = NULL;
   PSECURITY_DESCRIPTOR  psdProcess = NULL;
-  LPSTR       lpszOldDacl = NULL, lpszNewDacl = NULL;
+  LPWSTR      lpszOldDacl = NULL, lpszNewDacl = NULL;
   ULONG       daclLen = 0;
   PACL        pNewDacl = NULL;
   ACL_SIZE_INFORMATION si;
@@ -381,8 +384,8 @@ DWORD AddNodeManagerAndUserACEsToObject(
   // ACCESS_ALLOWED_ACE struct contains the first DWORD of the SID 
   //
   dwNewAclSize = si.AclBytesInUse + 
-    (countTokens + 1 + sizeof(forcesSidTypes)/sizeof(forcesSidTypes[0])) * 
-      (sizeof(ACCESS_ALLOWED_ACE) + SECURITY_MAX_SID_SIZE - sizeof(DWORD));
+      (DWORD)(countTokens + 1 + sizeof(forcesSidTypes)/sizeof(forcesSidTypes[0])) * 
+              (sizeof(ACCESS_ALLOWED_ACE) + SECURITY_MAX_SID_SIZE - sizeof(DWORD));
 
   pNewDacl = (PSID) LocalAlloc(LPTR, dwNewAclSize);
   if (!pNewDacl) {
@@ -511,7 +514,7 @@ DWORD AddNodeManagerAndUserACEsToObject(
       goto done;
     }
 
-    LogDebugMessage(L"Old DACL: %s\nNew DACL: %s\n", lpszOldDacl, lpszNewDacl);
+    LogDebugMessage(L"Old DACL: %ls\nNew DACL: %ls\n", lpszOldDacl, lpszNewDacl);
   }
   
 done:
@@ -634,7 +637,7 @@ done:
 // Returns:
 // ERROR_SUCCESS: On success
 // GetLastError: otherwise
-DWORD CreateTaskImpl(__in_opt HANDLE logonHandle, __in PCWSTR jobObjName,__in PCWSTR cmdLine,

+DWORD CreateTaskImpl(__in_opt HANDLE logonHandle, __in PCWSTR jobObjName,__in PWSTR cmdLine,

   __in LPCWSTR userName, __in long memory, __in long cpuRate)
 {
   DWORD dwErrorCode = ERROR_SUCCESS;
@@ -912,7 +915,7 @@ DWORD CreateTask(__in PCWSTR jobObjName,__in PWSTR cmdLine, __in long
memory, __
 // ERROR_SUCCESS: On success
 // GetLastError: otherwise
 DWORD CreateTaskAsUser(__in PCWSTR jobObjName,
-  __in PCWSTR user, __in PCWSTR pidFilePath, __in PCWSTR cmdLine)
+  __in PCWSTR user, __in PCWSTR pidFilePath, __in PWSTR cmdLine)
 {
   DWORD err = ERROR_SUCCESS;
   DWORD exitCode = EXIT_FAILURE;
@@ -923,6 +926,7 @@ DWORD CreateTaskAsUser(__in PCWSTR jobObjName,
   FILE* pidFile = NULL;
   DWORD retLen = 0;
   HANDLE logonHandle = NULL;
+  errno_t pidErrNo = 0;
 
   err = EnableImpersonatePrivileges();
   if( err != ERROR_SUCCESS ) {
@@ -961,8 +965,8 @@ DWORD CreateTaskAsUser(__in PCWSTR jobObjName,
   profileIsLoaded = TRUE; 
 
   // Create the PID file
-
-  if (!(pidFile = _wfopen(pidFilePath, "w"))) {
+  pidErrNo = _wfopen_s(&pidFile, pidFilePath, L"w");
+  if (pidErrNo) {
       err = GetLastError();
       ReportErrorCode(L"_wfopen:pidFilePath", err);
       goto done;


Mime
View raw message