From: Hans Leidekker Subject: [2/2] msi: Perform a suffix match on the volume name. Message-Id: <1429196515.1899.5.camel@codeweavers.com> Date: Thu, 16 Apr 2015 17:01:55 +0200 --- dlls/msi/media.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/dlls/msi/media.c b/dlls/msi/media.c index 3dbd1b7..7c8c94f 100644 --- a/dlls/msi/media.c +++ b/dlls/msi/media.c @@ -54,8 +54,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi); static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root) { - WCHAR volume_name[MAX_PATH + 1]; - WCHAR root[MAX_PATH + 1]; + WCHAR volume_name[MAX_PATH + 1], root[MAX_PATH + 1]; + const WCHAR *p; + int len, len2; strcpyW(root, source_root); PathStripToRootW(root); @@ -66,7 +67,13 @@ static BOOL source_matches_volume(MSIMEDIAINFO *mi, LPCWSTR source_root) WARN("failed to get volume information for %s (%u)\n", debugstr_w(root), GetLastError()); return FALSE; } - return !strcmpiW( mi->volume_label, volume_name ); + + len = strlenW( volume_name ); + len2 = strlenW( mi->volume_label ); + if (len2 > len) return FALSE; + p = volume_name + len - len2; + + return !strcmpiW( mi->volume_label, p ); } static UINT msi_change_media(MSIPACKAGE *package, MSIMEDIAINFO *mi)