aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKostiantyn Kostiuk <kkostiuk@redhat.com>2025-06-20 11:31:32 +0300
committerKostiantyn Kostiuk <kkostiuk@redhat.com>2025-06-30 13:17:10 +0300
commit012bb70cd16512dbcc1ba423c3f7f260e177afe7 (patch)
treef5931c115974edb2f80eb0517146f72255cf54d4
parent776bd01809fe0f524a578257ff82787d067dbe93 (diff)
downloadqemu-012bb70cd16512dbcc1ba423c3f7f260e177afe7.zip
qemu-012bb70cd16512dbcc1ba423c3f7f260e177afe7.tar.gz
qemu-012bb70cd16512dbcc1ba423c3f7f260e177afe7.tar.bz2
qga-vss: Exit with non-zero code when register fail
QGA installer uses rundll32 to run the DLLCOMRegister function from qga-vss.dll and perform VSS provider registration. rundll32 ignores the return value of the function and always exits with a zero exit code. This causes a situation where the installer does not know the status of VSS provider registration. This commit forces to change exit code when the VSS provider registration fails. https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/rundll32 Reviewed-by: Yan Vugenfirer <yvugenfi@redhat.com> Tested-by: Dehan Meng <demeng@redhat.com> Message-ID: <20250620083132.28347-1-kkostiuk@redhat.com> Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
-rw-r--r--qga/vss-win32/install.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp
index 5cea5bc..6ee2f44 100644
--- a/qga/vss-win32/install.cpp
+++ b/qga/vss-win32/install.cpp
@@ -385,7 +385,10 @@ out:
STDAPI_(void) CALLBACK DLLCOMRegister(HWND, HINSTANCE, LPSTR, int);
STDAPI_(void) CALLBACK DLLCOMRegister(HWND, HINSTANCE, LPSTR, int)
{
- COMRegister();
+ HRESULT hr = COMRegister();
+ if (FAILED(hr)) {
+ exit(hr);
+ }
}
STDAPI_(void) CALLBACK DLLCOMUnregister(HWND, HINSTANCE, LPSTR, int);