[PATCH] use a better size to lstrcpynW

Marcus Meissner meissner at suse.de
Thu Dec 13 10:52:50 CST 2007


---
 dlls/msi/dialog.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index d0e91cd..b31e32a 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -2472,11 +2472,17 @@ static void msi_dialog_vcl_add_columns( msi_dialog *dialog, msi_control *control
 
     while ((begin = strchrW( begin, '{' )) && count < 5)
     {
+    	DWORD xcnt;
+
         if (!(end = strchrW( begin, '}' )))
             return;
 
-        lstrcpynW( num, begin + 1, end - begin );
-        begin += end - begin + 1;
+
+        xcnt =  end - begin;
+        if (xcnt > sizeof(num)/sizeof(WCHAR))
+            xcnt = sizeof(num)/sizeof(WCHAR);
+        lstrcpynW( num, begin + 1, xcnt );
+        begin += xcnt + 1;
 
         /* empty braces or '0' hides the column */ 
         if ( !num[0] || !lstrcmpW( num, zero ) )
-- 
1.5.2.4



More information about the wine-patches mailing list