msi: Fix infinite loop.

Vincent Povirk madewokherd at gmail.com
Mon Mar 31 16:48:11 CDT 2014


This loop never exits if progid->Parent == progid and there is no
class. There are other checks for that in the file, so I assume that
condition is supposed to be possible.

The Office 2003 installer suffers from this.
-------------- next part --------------
From 5c2a86dd02bc48faa5b7f382d234c7fcaf2bfefa Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Mon, 31 Mar 2014 16:40:01 -0500
Subject: [PATCH] msi: Fix infinite loop.

---
 dlls/msi/classes.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dlls/msi/classes.c b/dlls/msi/classes.c
index a5139f8..2719a8e 100644
--- a/dlls/msi/classes.c
+++ b/dlls/msi/classes.c
@@ -1054,7 +1054,7 @@ static const MSICLASS *get_progid_class( const MSIPROGID *progid )
     {
         if (progid->Parent) progid = progid->Parent;
         if (progid->Class) return progid->Class;
-        if (!progid->Parent) break;
+        if (!progid->Parent || progid->Parent == progid) break;
     }
     return NULL;
 }
-- 
1.8.3.2



More information about the wine-patches mailing list