[DEVMGR] CClassNode::SetupNode(): Properly use Type (#2100)
authorSerge Gautherie <32623169+SergeGautherie@users.noreply.github.com>
Fri, 29 Nov 2019 13:13:13 +0000 (14:13 +0100)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Fri, 29 Nov 2019 13:13:13 +0000 (14:13 +0100)
dll/win32/devmgr/devmgmt/ClassNode.cpp

index bba78cf..17cb7ed 100644 (file)
@@ -42,8 +42,6 @@ CClassNode::SetupNode()
                                      0);
     if (hKey != INVALID_HANDLE_VALUE)
     {
-        Type = REG_SZ;
-
         // Lookup the class description (win7+)
         Size = sizeof(m_DisplayName);
         Success = RegQueryValueExW(hKey,
@@ -54,8 +52,12 @@ CClassNode::SetupNode()
                                    &Size);
         if (Success == ERROR_SUCCESS)
         {
+            if (Type != REG_SZ)
+            {
+                Success = ERROR_INVALID_DATA;
+            }
             // Check if the string starts with an @
-            if (m_DisplayName[0] == L'@')
+            else if (m_DisplayName[0] == L'@')
             {
                 // The description is located in a module resource
                 Success = ConvertResourceDescriptorToString(m_DisplayName, sizeof(m_DisplayName));
@@ -71,6 +73,10 @@ CClassNode::SetupNode()
                                        &Type,
                                        (LPBYTE)m_DisplayName,
                                        &Size);
+            if (Success == ERROR_SUCCESS && Type != REG_SZ)
+            {
+                Success = ERROR_INVALID_DATA;
+            }
         }
 
         // Close the registry key