From: Drew Ronneberg Subject: [PATCH] winemenubuilder: Do not associate a file type with a non-existent icon Message-Id: <1983242692.4067272.1416682760610.JavaMail.yahoo@jws106136.mail.bf1.yahoo.com> Date: Sat, 22 Nov 2014 18:59:20 +0000 (UTC) From 75ab2ef1b745fccd7bc9e9cac290a2a71fa0661a Mon Sep 17 00:00:00 2001 From: Drew Ronneberg Date: Sat, 22 Nov 2014 13:39:43 -0500 Subject: winemenubuilder: Do not associate a file type with a non-existent icon Macromedia FreeHand 9 demo had an application bug whereby it wants to associate a file type with a non-existant icon. Winemenubuilder doesn't check to make sure that the file exists before calling open_icon() from open_file_type_icon(), which leads to a open_icon() -> open_file_type_icon() -> open_icon() recursion until the stack overflows. Many thanks to AF for analyzing this bug (#35230) --- programs/winemenubuilder/winemenubuilder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c index 5d3bb27..dade029 100644 --- a/programs/winemenubuilder/winemenubuilder.c +++ b/programs/winemenubuilder/winemenubuilder.c @@ -1072,7 +1072,7 @@ static HRESULT open_icon(LPCWSTR filename, int index, BOOL bWait, IStream **ppSt hr = SHCreateStreamOnFileW(filename, STGM_READ, ppStream); } } - if (FAILED(hr)) + if (FAILED(hr) && PathFileExistsW(filename)) hr = open_file_type_icon(filename, ppStream); if (FAILED(hr) && !bWait) hr = open_default_icon(ppStream); -- 1.9.1