Module: wine Branch: master Commit: 77e0ee9013c0e97fa2cce2d6e4a43e2418a460a9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=77e0ee9013c0e97fa2cce2d6e4...
Author: Damjan Jovanovic damjan.jov@gmail.com Date: Tue Jun 2 19:15:58 2009 +0200
winemenubuilder: Ignore wine.desktop managed file types.
---
programs/winemenubuilder/winemenubuilder.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c index a86d207..462456a 100644 --- a/programs/winemenubuilder/winemenubuilder.c +++ b/programs/winemenubuilder/winemenubuilder.c @@ -1549,6 +1549,20 @@ static BOOL write_freedesktop_mime_type_entry(const char *packages_dir, const ch return ret; }
+static BOOL is_extension_blacklisted(LPCWSTR extension) +{ + /* These are managed through external tools like wine.desktop, to evade malware created file type associations */ + static const WCHAR comW[] = {'.','c','o','m',0}; + static const WCHAR exeW[] = {'.','e','x','e',0}; + static const WCHAR msiW[] = {'.','m','s','i',0}; + + if (!strcmpiW(extension, comW) || + !strcmpiW(extension, exeW) || + !strcmpiW(extension, msiW)) + return TRUE; + return FALSE; +} + static BOOL generate_associations(const char *xdg_data_home, const char *packages_dir, const char *applications_dir) { struct list *nativeMimeTypes = NULL; @@ -1581,7 +1595,7 @@ static BOOL generate_associations(const char *xdg_data_home, const char *package size *= 2; } while (ret == ERROR_MORE_DATA);
- if (ret == ERROR_SUCCESS && extensionW[0] == '.') + if (ret == ERROR_SUCCESS && extensionW[0] == '.' && !is_extension_blacklisted(extensionW)) { char *extensionA = NULL; WCHAR *commandW = NULL;