Juan Lang : cryptui: Make sure input file is not empty.

Alexandre Julliard julliard at winehq.org
Tue Dec 23 13:41:22 CST 2008


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Mon Dec 22 19:16:07 2008 -0800

cryptui: Make sure input file is not empty.

---

 dlls/cryptui/cryptui_En.rc |    1 +
 dlls/cryptui/cryptuires.h  |    1 +
 dlls/cryptui/main.c        |   38 +++++++++++++++++++++++++++++++++++---
 3 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/dlls/cryptui/cryptui_En.rc b/dlls/cryptui/cryptui_En.rc
index 470eb1f..9f42d2e 100644
--- a/dlls/cryptui/cryptui_En.rc
+++ b/dlls/cryptui/cryptui_En.rc
@@ -76,6 +76,7 @@ STRINGTABLE DISCARDABLE
     IDS_IMPORT_FILTER_SERIALIZED_STORE "Microsoft Serialized Certificate Store (*.sst)"
     IDS_IMPORT_FILTER_CMS "CMS/PKCS #7 Messages (*.spc; *.p7b)"
     IDS_IMPORT_FILTER_ALL "All Files (*.*)"
+    IDS_IMPORT_EMPTY_FILE "Please select a file."
     IDS_PURPOSE_SERVER_AUTH "Ensures the identify of a remote computer"
     IDS_PURPOSE_CLIENT_AUTH "Proves your identity to a remote computer"
     IDS_PURPOSE_CODE_SIGNING "Ensures software came from software publisher\nProtects software from alteration after publication"
diff --git a/dlls/cryptui/cryptuires.h b/dlls/cryptui/cryptuires.h
index 9abfe49..b5883a6 100644
--- a/dlls/cryptui/cryptuires.h
+++ b/dlls/cryptui/cryptuires.h
@@ -73,6 +73,7 @@
 #define IDS_IMPORT_FILTER_SERIALIZED_STORE 1053
 #define IDS_IMPORT_FILTER_CMS 1054
 #define IDS_IMPORT_FILTER_ALL 1055
+#define IDS_IMPORT_EMPTY_FILE 1056
 
 #define IDS_PURPOSE_SERVER_AUTH 1100
 #define IDS_PURPOSE_CLIENT_AUTH 1101
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c
index c37c6aa..23efa07 100644
--- a/dlls/cryptui/main.c
+++ b/dlls/cryptui/main.c
@@ -3529,7 +3529,8 @@ static BOOL check_context_type(DWORD dwFlags, DWORD type)
 }
 
 
-static void import_warn_type_mismatch(DWORD dwFlags, HWND hwnd, LPCWSTR szTitle)
+static void import_warning(DWORD dwFlags, HWND hwnd, LPCWSTR szTitle,
+ int warningID)
 {
     if (!(dwFlags & CRYPTUI_WIZ_NO_UI))
     {
@@ -3544,12 +3545,17 @@ static void import_warn_type_mismatch(DWORD dwFlags, HWND hwnd, LPCWSTR szTitle)
              sizeof(title) / sizeof(title[0]));
             pTitle = title;
         }
-        LoadStringW(hInstance, IDS_IMPORT_TYPE_MISMATCH, error,
+        LoadStringW(hInstance, warningID, error,
          sizeof(error) / sizeof(error[0]));
         MessageBoxW(hwnd, error, pTitle, MB_ICONERROR | MB_OK);
     }
 }
 
+static void import_warn_type_mismatch(DWORD dwFlags, HWND hwnd, LPCWSTR szTitle)
+{
+    import_warning(dwFlags, hwnd, szTitle, IDS_IMPORT_TYPE_MISMATCH);
+}
+
 static BOOL check_store_context_type(DWORD dwFlags, HCERTSTORE store)
 {
     BOOL ret;
@@ -3765,6 +3771,7 @@ static WCHAR *make_import_file_filter(DWORD dwFlags)
 struct ImportWizData
 {
     DWORD dwFlags;
+    LPCWSTR pwszWizardTitle;
     PCCRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc;
     HCERTSTORE hDestCertStore;
 };
@@ -3796,6 +3803,30 @@ static LRESULT CALLBACK import_file_dlg_proc(HWND hwnd, UINT msg, WPARAM wp,
              PSWIZB_BACK | PSWIZB_NEXT);
             ret = TRUE;
             break;
+        case PSN_WIZNEXT:
+        {
+            HWND fileNameEdit = GetDlgItem(hwnd, IDC_IMPORT_FILENAME);
+            DWORD len = SendMessageW(fileNameEdit, WM_GETTEXTLENGTH, 0, 0);
+
+            data = (struct ImportWizData *)GetWindowLongPtrW(hwnd, DWLP_USER);
+            if (!len)
+            {
+                import_warning(data->dwFlags, hwnd, data->pwszWizardTitle,
+                 IDS_IMPORT_EMPTY_FILE);
+                SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, 1);
+                ret = 1;
+            }
+            else
+            {
+                LPWSTR fileName = HeapAlloc(GetProcessHeap(), 0,
+                 (len + 1) * sizeof(WCHAR));
+
+                SendMessageW(fileNameEdit, WM_GETTEXT, len + 1,
+                 (LPARAM)fileName);
+                FIXME("validate %s\n", debugstr_w(fileName));
+            }
+            break;
+        }
         }
         break;
     }
@@ -3883,7 +3914,8 @@ static BOOL show_import_ui(DWORD dwFlags, HWND hwndParent,
 {
     PROPSHEETHEADERW hdr;
     PROPSHEETPAGEW pages[4];
-    struct ImportWizData data = { dwFlags, pImportSrc, hDestCertStore };
+    struct ImportWizData data = { dwFlags, pwszWizardTitle, pImportSrc,
+     hDestCertStore };
 
     FIXME("\n");
 




More information about the wine-cvs mailing list