[ADVAPI32]
authorEric Kohl <eric.kohl@reactos.org>
Thu, 5 Jan 2012 22:07:33 +0000 (22:07 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Thu, 5 Jan 2012 22:07:33 +0000 (22:07 +0000)
Pass nt paths to ElfrBackupELFW and ElfrClearELFW.

svn path=/trunk/; revision=54846

reactos/dll/win32/advapi32/service/eventlog.c

index 76f2479..29073ec 100644 (file)
@@ -145,33 +145,39 @@ BOOL WINAPI
 BackupEventLogA(IN HANDLE hEventLog,
                 IN LPCSTR lpBackupFileName)
 {
 BackupEventLogA(IN HANDLE hEventLog,
                 IN LPCSTR lpBackupFileName)
 {
-    ANSI_STRING BackupFileName;
+    ANSI_STRING BackupFileNameA;
+    UNICODE_STRING BackupFileNameW;
     NTSTATUS Status;
     NTSTATUS Status;
+    BOOL Result;
 
     TRACE("%p, %s\n", hEventLog, lpBackupFileName);
 
 
     TRACE("%p, %s\n", hEventLog, lpBackupFileName);
 
-    RtlInitAnsiString(&BackupFileName, lpBackupFileName);
-
-    RpcTryExcept
-    {
-        Status = ElfrBackupELFA(hEventLog,
-                                (PRPC_STRING)&BackupFileName);
-    }
-    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+    if (lpBackupFileName == NULL)
     {
     {
-        Status = I_RpcMapWin32Status(RpcExceptionCode());
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
     }
     }
-    RpcEndExcept;
 
 
+    RtlInitAnsiString(&BackupFileNameA, lpBackupFileName);
+
+    Status = RtlAnsiStringToUnicodeString(&BackupFileNameW,
+                                          &BackupFileNameA,
+                                          TRUE);
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
         return FALSE;
     }
 
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
         return FALSE;
     }
 
-    return TRUE;
+    Result = BackupEventLogW(hEventLog,
+                             BackupFileNameW.Buffer);
+
+    RtlFreeUnicodeString(&BackupFileNameW);
+
+    return(Result);
 }
 
 }
 
+
 /******************************************************************************
  * BackupEventLogW [ADVAPI32.@]
  *
 /******************************************************************************
  * BackupEventLogW [ADVAPI32.@]
  *
@@ -183,17 +189,28 @@ BOOL WINAPI
 BackupEventLogW(IN HANDLE hEventLog,
                 IN LPCWSTR lpBackupFileName)
 {
 BackupEventLogW(IN HANDLE hEventLog,
                 IN LPCWSTR lpBackupFileName)
 {
-    UNICODE_STRING BackupFileName;
+    UNICODE_STRING BackupFileNameW;
     NTSTATUS Status;
 
     TRACE("%p, %s\n", hEventLog, debugstr_w(lpBackupFileName));
 
     NTSTATUS Status;
 
     TRACE("%p, %s\n", hEventLog, debugstr_w(lpBackupFileName));
 
-    RtlInitUnicodeString(&BackupFileName, lpBackupFileName);
+    if (lpBackupFileName == NULL)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+
+    if (!RtlDosPathNameToNtPathName_U(lpBackupFileName, &BackupFileNameW,
+                                      NULL, NULL))
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
 
     RpcTryExcept
     {
         Status = ElfrBackupELFW(hEventLog,
 
     RpcTryExcept
     {
         Status = ElfrBackupELFW(hEventLog,
-                                (PRPC_UNICODE_STRING)&BackupFileName);
+                                (PRPC_UNICODE_STRING)&BackupFileNameW);
     }
     RpcExcept(EXCEPTION_EXECUTE_HANDLER)
     {
     }
     RpcExcept(EXCEPTION_EXECUTE_HANDLER)
     {
@@ -201,6 +218,8 @@ BackupEventLogW(IN HANDLE hEventLog,
     }
     RpcEndExcept;
 
     }
     RpcEndExcept;
 
+    RtlFreeHeap(RtlGetProcessHeap(), 0, BackupFileNameW.Buffer);
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -218,31 +237,37 @@ BOOL WINAPI
 ClearEventLogA(IN HANDLE hEventLog,
                IN LPCSTR lpBackupFileName)
 {
 ClearEventLogA(IN HANDLE hEventLog,
                IN LPCSTR lpBackupFileName)
 {
-    ANSI_STRING BackupFileName;
+    ANSI_STRING BackupFileNameA;
+    UNICODE_STRING BackupFileNameW;
     NTSTATUS Status;
     NTSTATUS Status;
+    BOOL Result;
 
     TRACE("%p, %s\n", hEventLog, lpBackupFileName);
 
 
     TRACE("%p, %s\n", hEventLog, lpBackupFileName);
 
-    RtlInitAnsiString(&BackupFileName, lpBackupFileName);
-
-    RpcTryExcept
+    if (lpBackupFileName == NULL)
     {
     {
-        Status = ElfrClearELFA(hEventLog,
-                               (PRPC_STRING)&BackupFileName);
+        RtlInitUnicodeString(&BackupFileNameW, NULL);
     }
     }
-    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+    else
     {
     {
-        Status = I_RpcMapWin32Status(RpcExceptionCode());
-    }
-    RpcEndExcept;
+        RtlInitAnsiString(&BackupFileNameA, lpBackupFileName);
 
 
-    if (!NT_SUCCESS(Status))
-    {
-        SetLastError(RtlNtStatusToDosError(Status));
-        return FALSE;
+        Status = RtlAnsiStringToUnicodeString(&BackupFileNameW,
+                                              &BackupFileNameA,
+                                              TRUE);
+        if (!NT_SUCCESS(Status))
+        {
+            SetLastError(RtlNtStatusToDosError(Status));
+            return FALSE;
+        }
     }
 
     }
 
-    return TRUE;
+    Result = ClearEventLogW(hEventLog,
+                            BackupFileNameW.Buffer);
+
+    RtlFreeUnicodeString(&BackupFileNameW);
+
+    return Result;
 }
 
 
 }
 
 
@@ -253,17 +278,29 @@ BOOL WINAPI
 ClearEventLogW(IN HANDLE hEventLog,
                IN LPCWSTR lpBackupFileName)
 {
 ClearEventLogW(IN HANDLE hEventLog,
                IN LPCWSTR lpBackupFileName)
 {
-    UNICODE_STRING BackupFileName;
+    UNICODE_STRING BackupFileNameW;
     NTSTATUS Status;
 
     TRACE("%p, %s\n", hEventLog, debugstr_w(lpBackupFileName));
 
     NTSTATUS Status;
 
     TRACE("%p, %s\n", hEventLog, debugstr_w(lpBackupFileName));
 
-    RtlInitUnicodeString(&BackupFileName,lpBackupFileName);
+    if (lpBackupFileName == NULL)
+    {
+        RtlInitUnicodeString(&BackupFileNameW, NULL);
+    }
+    else
+    {
+        if (!RtlDosPathNameToNtPathName_U(lpBackupFileName, &BackupFileNameW,
+                                          NULL, NULL))
+        {
+            SetLastError(ERROR_INVALID_PARAMETER);
+            return FALSE;
+        }
+    }
 
     RpcTryExcept
     {
         Status = ElfrClearELFW(hEventLog,
 
     RpcTryExcept
     {
         Status = ElfrClearELFW(hEventLog,
-                               (PRPC_UNICODE_STRING)&BackupFileName);
+                               (PRPC_UNICODE_STRING)&BackupFileNameW);
     }
     RpcExcept(EXCEPTION_EXECUTE_HANDLER)
     {
     }
     RpcExcept(EXCEPTION_EXECUTE_HANDLER)
     {
@@ -271,6 +308,9 @@ ClearEventLogW(IN HANDLE hEventLog,
     }
     RpcEndExcept;
 
     }
     RpcEndExcept;
 
+    if (lpBackupFileName != NULL)
+        RtlFreeHeap(RtlGetProcessHeap(), 0, BackupFileNameW.Buffer);
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));