https://git.reactos.org/?p=reactos.git;a=commitdiff;h=807af6a4d13d5b280e0f113124e8f5085cfc9f4e

commit 807af6a4d13d5b280e0f113124e8f5085cfc9f4e
Author:     Hervé Poussineau <[email protected]>
AuthorDate: Sat Oct 9 07:21:53 2021 +0200
Commit:     Hervé Poussineau <[email protected]>
CommitDate: Thu Oct 14 23:39:31 2021 +0200

    [VIDEOPRT] Correctly return failure when adapter can't be found
    
    This was wrong in both call chains (PNP case or legacy case)
    HwFindAdapter returns a VP_STATUS, while we were expecting a NTSTATUS.
    
    CORE-17789
---
 win32ss/drivers/videoprt/videoprt.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/win32ss/drivers/videoprt/videoprt.c 
b/win32ss/drivers/videoprt/videoprt.c
index d49cd20f033..35580904a7b 100644
--- a/win32ss/drivers/videoprt/videoprt.c
+++ b/win32ss/drivers/videoprt/videoprt.c
@@ -345,6 +345,7 @@ IntVideoPortFindAdapter(
 {
     PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension;
     NTSTATUS Status;
+    VP_STATUS vpStatus;
     VIDEO_PORT_CONFIG_INFO ConfigInfo;
     SYSTEM_BASIC_INFORMATION SystemBasicInfo;
     UCHAR Again = FALSE;
@@ -405,32 +406,27 @@ IntVideoPortFindAdapter(
                           
DriverExtension->InitializationData.HwDeviceExtensionSize);
 
             /* FIXME: Need to figure out what string to pass as param 3. */
-            Status = DriverExtension->InitializationData.HwFindAdapter(
+            vpStatus = DriverExtension->InitializationData.HwFindAdapter(
                          &DeviceExtension->MiniPortDeviceExtension,
                          DriverExtension->HwContext,
                          NULL,
                          &ConfigInfo,
                          &Again);
 
-            if (Status == ERROR_DEV_NOT_EXIST)
+            if (vpStatus == ERROR_DEV_NOT_EXIST)
             {
                 continue;
             }
-            else if (Status == NO_ERROR)
-            {
-                break;
-            }
             else
             {
-                ERR_(VIDEOPRT, "HwFindAdapter call failed with error 0x%X\n", 
Status);
-                goto Failure;
+                break;
             }
         }
     }
     else
     {
         /* FIXME: Need to figure out what string to pass as param 3. */
-        Status = DriverExtension->InitializationData.HwFindAdapter(
+        vpStatus = DriverExtension->InitializationData.HwFindAdapter(
                      &DeviceExtension->MiniPortDeviceExtension,
                      DriverExtension->HwContext,
                      NULL,
@@ -438,9 +434,10 @@ IntVideoPortFindAdapter(
                      &Again);
     }
 
-    if (Status != NO_ERROR)
+    if (vpStatus != NO_ERROR)
     {
-        ERR_(VIDEOPRT, "HwFindAdapter call failed with error 0x%X\n", Status);
+        ERR_(VIDEOPRT, "HwFindAdapter call failed with error 0x%X\n", 
vpStatus);
+        Status = STATUS_UNSUCCESSFUL;
         goto Failure;
     }
 

Reply via email to