Reviewed-by: Kostiantyn Kostiuk <[email protected]>
On Mon, Sep 7, 2026 at 1:50 PM Marc-André Lureau <
[email protected]> wrote:
> ControlService requires a non-NULL lpServiceStatus parameter ([out] vs
> [out, optional]).
> Passing NULL is undefined behavior per MSDN and can crash on
> some Windows versions.
>
> Fixes: 917ebcb17027 ("qga-win: Fix QGA VSS Provider service stop failure")
> Signed-off-by: Marc-André Lureau <[email protected]>
> ---
> qga/vss-win32/install.cpp | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp
> index 5b7a8e9bc529..f89658d277e9 100644
> --- a/qga/vss-win32/install.cpp
> +++ b/qga/vss-win32/install.cpp
> @@ -572,6 +572,7 @@ namespace _com_util
> /* Stop QGA VSS provider service using Winsvc API */
> STDAPI StopService(void)
> {
> + SERVICE_STATUS status;
> qga_debug_begin;
>
> HRESULT hr = S_OK;
> @@ -590,7 +591,7 @@ STDAPI StopService(void)
> hr = E_FAIL;
> goto out;
> }
> - if (!(ControlService(service, SERVICE_CONTROL_STOP, NULL))) {
> + if (!(ControlService(service, SERVICE_CONTROL_STOP, &status))) {
> errmsg(E_FAIL, "Failed to stop service");
> hr = E_FAIL;
> }
>
> --
> 2.55.0.543.g5ebe2ebe4ea8
>
>