Hans Leidekker : msi: Perform a suffix match on the volume name.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Apr 17 04:22:21 CDT 2015


Module: wine
Branch: master
Commit: 89693776473f174f45d950e9669044ed46bc331b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=89693776473f174f45d950e9669044ed46bc331b

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Thu Apr 16 17:01:55 2015 +0200

msi: Perform a suffix match on the volume name.

---

 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)




More information about the wine-cvs mailing list