[ros-diffs] [ekohl] 54846: [ADVAPI32] Pass nt paths to ElfrBackupELFW and ElfrClearELFW.

ekohl at svn.reactos.org ekohl at svn.reactos.org
Thu Jan 5 22:07:36 UTC 2012


Author: ekohl
Date: Thu Jan  5 22:07:33 2012
New Revision: 54846

URL: http://svn.reactos.org/svn/reactos?rev=54846&view=rev
Log:
[ADVAPI32]
Pass nt paths to ElfrBackupELFW and ElfrClearELFW.

Modified:
    trunk/reactos/dll/win32/advapi32/service/eventlog.c

Modified: trunk/reactos/dll/win32/advapi32/service/eventlog.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/service/eventlog.c?rev=54846&r1=54845&r2=54846&view=diff
==============================================================================
--- trunk/reactos/dll/win32/advapi32/service/eventlog.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/advapi32/service/eventlog.c [iso-8859-1] Thu Jan  5 22:07:33 2012
@@ -145,32 +145,38 @@
 BackupEventLogA(IN HANDLE hEventLog,
                 IN LPCSTR lpBackupFileName)
 {
-    ANSI_STRING BackupFileName;
-    NTSTATUS Status;
+    ANSI_STRING BackupFileNameA;
+    UNICODE_STRING BackupFileNameW;
+    NTSTATUS Status;
+    BOOL Result;
 
     TRACE("%p, %s\n", hEventLog, lpBackupFileName);
 
-    RtlInitAnsiString(&BackupFileName, lpBackupFileName);
-
-    RpcTryExcept
-    {
-        Status = ElfrBackupELFA(hEventLog,
-                                (PRPC_STRING)&BackupFileName);
-    }
-    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
-    {
-        Status = I_RpcMapWin32Status(RpcExceptionCode());
-    }
-    RpcEndExcept;
-
-    if (!NT_SUCCESS(Status))
-    {
-        SetLastError(RtlNtStatusToDosError(Status));
-        return FALSE;
-    }
-
-    return TRUE;
-}
+    if (lpBackupFileName == NULL)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+
+    RtlInitAnsiString(&BackupFileNameA, lpBackupFileName);
+
+    Status = RtlAnsiStringToUnicodeString(&BackupFileNameW,
+                                          &BackupFileNameA,
+                                          TRUE);
+    if (!NT_SUCCESS(Status))
+    {
+        SetLastError(RtlNtStatusToDosError(Status));
+        return FALSE;
+    }
+
+    Result = BackupEventLogW(hEventLog,
+                             BackupFileNameW.Buffer);
+
+    RtlFreeUnicodeString(&BackupFileNameW);
+
+    return(Result);
+}
+
 
 /******************************************************************************
  * BackupEventLogW [ADVAPI32.@]
@@ -183,23 +189,36 @@
 BackupEventLogW(IN HANDLE hEventLog,
                 IN LPCWSTR lpBackupFileName)
 {
-    UNICODE_STRING BackupFileName;
+    UNICODE_STRING BackupFileNameW;
     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,
-                                (PRPC_UNICODE_STRING)&BackupFileName);
-    }
-    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
-    {
-        Status = I_RpcMapWin32Status(RpcExceptionCode());
-    }
-    RpcEndExcept;
+                                (PRPC_UNICODE_STRING)&BackupFileNameW);
+    }
+    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    RpcEndExcept;
+
+    RtlFreeHeap(RtlGetProcessHeap(), 0, BackupFileNameW.Buffer);
 
     if (!NT_SUCCESS(Status))
     {
@@ -218,31 +237,37 @@
 ClearEventLogA(IN HANDLE hEventLog,
                IN LPCSTR lpBackupFileName)
 {
-    ANSI_STRING BackupFileName;
-    NTSTATUS Status;
+    ANSI_STRING BackupFileNameA;
+    UNICODE_STRING BackupFileNameW;
+    NTSTATUS Status;
+    BOOL Result;
 
     TRACE("%p, %s\n", hEventLog, lpBackupFileName);
 
-    RtlInitAnsiString(&BackupFileName, lpBackupFileName);
-
-    RpcTryExcept
-    {
-        Status = ElfrClearELFA(hEventLog,
-                               (PRPC_STRING)&BackupFileName);
-    }
-    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
-    {
-        Status = I_RpcMapWin32Status(RpcExceptionCode());
-    }
-    RpcEndExcept;
-
-    if (!NT_SUCCESS(Status))
-    {
-        SetLastError(RtlNtStatusToDosError(Status));
-        return FALSE;
-    }
-
-    return TRUE;
+    if (lpBackupFileName == NULL)
+    {
+        RtlInitUnicodeString(&BackupFileNameW, NULL);
+    }
+    else
+    {
+        RtlInitAnsiString(&BackupFileNameA, lpBackupFileName);
+
+        Status = RtlAnsiStringToUnicodeString(&BackupFileNameW,
+                                              &BackupFileNameA,
+                                              TRUE);
+        if (!NT_SUCCESS(Status))
+        {
+            SetLastError(RtlNtStatusToDosError(Status));
+            return FALSE;
+        }
+    }
+
+    Result = ClearEventLogW(hEventLog,
+                            BackupFileNameW.Buffer);
+
+    RtlFreeUnicodeString(&BackupFileNameW);
+
+    return Result;
 }
 
 
@@ -253,23 +278,38 @@
 ClearEventLogW(IN HANDLE hEventLog,
                IN LPCWSTR lpBackupFileName)
 {
-    UNICODE_STRING BackupFileName;
+    UNICODE_STRING BackupFileNameW;
     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,
-                               (PRPC_UNICODE_STRING)&BackupFileName);
-    }
-    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
-    {
-        Status = I_RpcMapWin32Status(RpcExceptionCode());
-    }
-    RpcEndExcept;
+                               (PRPC_UNICODE_STRING)&BackupFileNameW);
+    }
+    RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    RpcEndExcept;
+
+    if (lpBackupFileName != NULL)
+        RtlFreeHeap(RtlGetProcessHeap(), 0, BackupFileNameW.Buffer);
 
     if (!NT_SUCCESS(Status))
     {




More information about the Ros-diffs mailing list