Don't try to dereference possible NULL pointers
authorHervé Poussineau <hpoussin@reactos.org>
Tue, 20 Dec 2005 20:07:40 +0000 (20:07 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Tue, 20 Dec 2005 20:07:40 +0000 (20:07 +0000)
svn path=/trunk/; revision=20277

reactos/lib/setupapi/devinst.c

index 7e6d27e..7369f4e 100644 (file)
@@ -5311,13 +5311,18 @@ AddDriverToList(
         NULL);
 
     /* Copy MatchingId information */
-    driverInfo->MatchingId = HeapAlloc(GetProcessHeap(), 0, (wcslen(MatchingId) + 1) * sizeof(WCHAR));
-    if (!driverInfo->MatchingId)
+    if (MatchingId)
     {
-        SetLastError(ERROR_NOT_ENOUGH_MEMORY);
-        goto cleanup;
+        driverInfo->MatchingId = HeapAlloc(GetProcessHeap(), 0, (wcslen(MatchingId) + 1) * sizeof(WCHAR));
+        if (!driverInfo->MatchingId)
+        {
+            SetLastError(ERROR_NOT_ENOUGH_MEMORY);
+            goto cleanup;
+        }
+        RtlCopyMemory(driverInfo->MatchingId, MatchingId, (wcslen(MatchingId) + 1) * sizeof(WCHAR));
     }
-    RtlCopyMemory(driverInfo->MatchingId, MatchingId, (wcslen(MatchingId) + 1) * sizeof(WCHAR));
+    else
+        driverInfo->MatchingId = NULL;
 
     /* Get inf install section */
     Result = FALSE;
@@ -6313,10 +6318,12 @@ SetupDiEnumDriverInfoW(
         SetLastError(ERROR_INVALID_USER_BUFFER);
     else
     {
-        struct DeviceInfoElement *devInfo = (struct DeviceInfoElement *)DeviceInfoData->Reserved;
+        struct DeviceInfoElement *devInfo = NULL;
         PLIST_ENTRY ItemList;
+        if (DeviceInfoData)
+            devInfo = (struct DeviceInfoElement *)DeviceInfoData->Reserved;
         if (DriverType == SPDIT_CLASSDRIVER ||
-            devInfo->CreationFlags & DICD_INHERIT_CLASSDRVS)
+            (devInfo && devInfo->CreationFlags & DICD_INHERIT_CLASSDRVS))
         {
             ListHead = &((struct DeviceInfoSet *)DeviceInfoSet)->DriverListHead;
         }