- GetServiceDisplayNameA/W and GetServiceKeyNameA/W: Fix returned name size.
[reactos.git] / reactos / dll / win32 / advapi32 / service / scm.c
index 52c3698..44df545 100644 (file)
@@ -1227,6 +1227,9 @@ GetServiceDisplayNameA(SC_HANDLE hSCManager,
 
     TRACE("GetServiceDisplayNameA() called\n");
 
+    if (!lpDisplayName)
+        *lpcchBuffer = 0;
+
     HandleBind();
 
     _SEH_TRY
@@ -1253,8 +1256,6 @@ GetServiceDisplayNameA(SC_HANDLE hSCManager,
         return FALSE;
     }
 
-    (*lpcchBuffer)--;
-
     return TRUE;
 }
 
@@ -1274,6 +1275,9 @@ GetServiceDisplayNameW(SC_HANDLE hSCManager,
 
     TRACE("GetServiceDisplayNameW() called\n");
 
+    if (!lpDisplayName)
+        *lpcchBuffer = 0;
+
     HandleBind();
 
     _SEH_TRY
@@ -1297,8 +1301,6 @@ GetServiceDisplayNameW(SC_HANDLE hSCManager,
         return FALSE;
     }
 
-    (*lpcchBuffer)--;
-
     return TRUE;
 }
 
@@ -1318,6 +1320,9 @@ GetServiceKeyNameA(SC_HANDLE hSCManager,
 
     TRACE("GetServiceKeyNameA() called\n");
 
+    if (!lpServiceName)
+        *lpcchBuffer = 0;
+
     HandleBind();
 
     _SEH_TRY
@@ -1341,8 +1346,6 @@ GetServiceKeyNameA(SC_HANDLE hSCManager,
         return FALSE;
     }
 
-    (*lpcchBuffer)--;
-
     return TRUE;
 }
 
@@ -1362,6 +1365,9 @@ GetServiceKeyNameW(SC_HANDLE hSCManager,
 
     TRACE("GetServiceKeyNameW() called\n");
 
+    if (!lpDisplayName)
+        *lpcchBuffer = 0;
+
     HandleBind();
 
     _SEH_TRY
@@ -1385,8 +1391,6 @@ GetServiceKeyNameW(SC_HANDLE hSCManager,
         return FALSE;
     }
 
-    (*lpcchBuffer)--;
-
     return TRUE;
 }