Reviewed-by: Kostiantyn Kostiuk <[email protected]>
On Mon, Sep 7, 2026 at 1:50 PM Marc-André Lureau <
[email protected]> wrote:
> StopService() unconditionally calls CloseServiceHandle() on both
> the service and manager handles in the cleanup path, even when
> OpenSCManager() or OpenService() failed and the handles are NULL.
>
> Fixes: 917ebcb17027 ("qga-win: Fix QGA VSS Provider service stop failure")
> Signed-off-by: Marc-André Lureau <[email protected]>
> ---
> qga/vss-win32/install.cpp | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp
> index 12b045e2074f..9e8db79c122c 100644
> --- a/qga/vss-win32/install.cpp
> +++ b/qga/vss-win32/install.cpp
> @@ -597,8 +597,12 @@ STDAPI StopService(void)
> }
>
> out:
> - CloseServiceHandle(service);
> - CloseServiceHandle(manager);
> + if (service) {
> + CloseServiceHandle(service);
> + }
> + if (manager) {
> + CloseServiceHandle(manager);
> + }
> qga_debug_end;
> return hr;
> }
>
> --
> 2.55.0.543.g5ebe2ebe4ea8
>
>