From: Alex Henrie alexhenrie24@gmail.com
--- dlls/cryptui/main.c | 141 +++++++++++++++----------------------------- 1 file changed, 46 insertions(+), 95 deletions(-)
diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c index 2edab44ffd6..57e2c65be0e 100644 --- a/dlls/cryptui/main.c +++ b/dlls/cryptui/main.c @@ -174,10 +174,8 @@ static void add_cert_to_view(HWND lv, PCCERT_CONTEXT cert, DWORD *allocatedLen,
static LPSTR get_cert_mgr_usages(void) { - static const WCHAR keyName[] = { 'S','o','f','t','w','a','r','e','\','M', - 'i','c','r','o','s','o','f','t','\','C','r','y','p','t','o','g','r','a', - 'p','h','y','\','U','I','\','C','e','r','t','m','g','r','\','P','u', - 'r','p','o','s','e',0 }; + static const WCHAR keyName[] = + L"Software\Microsoft\Cryptography\UI\Certmgr\Purpose"; LPSTR str = NULL; HKEY key;
@@ -437,15 +435,6 @@ static void show_store_certs(HWND hwnd, HCERTSTORE store) (LPARAM)cert_mgr_sort_by_subject); }
-static const WCHAR my[] = { 'M','y',0 }; -static const WCHAR addressBook[] = { - 'A','d','d','r','e','s','s','B','o','o','k',0 }; -static const WCHAR ca[] = { 'C','A',0 }; -static const WCHAR root[] = { 'R','o','o','t',0 }; -static const WCHAR trustedPublisher[] = { - 'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r',0 }; -static const WCHAR disallowed[] = { 'D','i','s','a','l','l','o','w','e','d',0 }; - struct CertMgrStoreInfo { LPCWSTR name; @@ -454,21 +443,21 @@ struct CertMgrStoreInfo };
static const struct CertMgrStoreInfo defaultStoreList[] = { - { my, IDS_WARN_REMOVE_MY, IDS_WARN_REMOVE_PLURAL_MY }, - { addressBook, IDS_WARN_REMOVE_ADDRESSBOOK, + { L"My", IDS_WARN_REMOVE_MY, IDS_WARN_REMOVE_PLURAL_MY }, + { L"AddressBook", IDS_WARN_REMOVE_ADDRESSBOOK, IDS_WARN_REMOVE_PLURAL_ADDRESSBOOK }, - { ca, IDS_WARN_REMOVE_CA, IDS_WARN_REMOVE_PLURAL_CA }, - { root, IDS_WARN_REMOVE_ROOT, IDS_WARN_REMOVE_PLURAL_ROOT }, - { trustedPublisher, IDS_WARN_REMOVE_TRUSTEDPUBLISHER, + { L"CA", IDS_WARN_REMOVE_CA, IDS_WARN_REMOVE_PLURAL_CA }, + { L"Root", IDS_WARN_REMOVE_ROOT, IDS_WARN_REMOVE_PLURAL_ROOT }, + { L"TrustedPublisher", IDS_WARN_REMOVE_TRUSTEDPUBLISHER, IDS_WARN_REMOVE_PLURAL_TRUSTEDPUBLISHER }, - { disallowed, IDS_WARN_REMOVE_DEFAULT }, + { L"Disallowed", IDS_WARN_REMOVE_DEFAULT }, };
static const struct CertMgrStoreInfo publisherStoreList[] = { - { root, IDS_WARN_REMOVE_ROOT, IDS_WARN_REMOVE_PLURAL_ROOT }, - { trustedPublisher, IDS_WARN_REMOVE_TRUSTEDPUBLISHER, + { L"Root", IDS_WARN_REMOVE_ROOT, IDS_WARN_REMOVE_PLURAL_ROOT }, + { L"TrustedPublisher", IDS_WARN_REMOVE_TRUSTEDPUBLISHER, IDS_WARN_REMOVE_PLURAL_TRUSTEDPUBLISHER }, - { disallowed, IDS_WARN_REMOVE_PLURAL_DEFAULT }, + { L"Disallowed", IDS_WARN_REMOVE_PLURAL_DEFAULT }, };
struct CertMgrData @@ -649,10 +638,8 @@ static LONG_PTR find_oid_in_list(HWND lv, LPCSTR oid)
static void save_cert_mgr_usages(HWND hwnd) { - static const WCHAR keyName[] = { 'S','o','f','t','w','a','r','e','\','M', - 'i','c','r','o','s','o','f','t','\','C','r','y','p','t','o','g','r','a', - 'p','h','y','\','U','I','\','C','e','r','t','m','g','r','\','P','u', - 'r','p','o','s','e',0 }; + static const WCHAR keyName[] = + L"Software\Microsoft\Cryptography\UI\Certmgr\Purpose"; HKEY key; HWND lv = GetDlgItem(hwnd, IDC_CERTIFICATE_USAGES); int purposes = SendMessageW(lv, LVM_GETITEMCOUNT, 0, 0), i; @@ -867,7 +854,6 @@ static void get_cert_usages(PCCERT_CONTEXT cert, LPWSTR *str) { if (usage->cUsageIdentifier) { - static const WCHAR commaSpace[] = { ',',' ',0 }; DWORD i, len = 1; LPWSTR ptr;
@@ -883,7 +869,7 @@ static void get_cert_usages(PCCERT_CONTEXT cert, LPWSTR *str) else len += strlen(usage->rgpszUsageIdentifier[i]); if (i < usage->cUsageIdentifier - 1) - len += lstrlenW(commaSpace); + len += strlen(", "); } *str = malloc(len * sizeof(WCHAR)); if (*str) @@ -910,8 +896,8 @@ static void get_cert_usages(PCCERT_CONTEXT cert, LPWSTR *str) } if (i < usage->cUsageIdentifier - 1) { - lstrcpyW(ptr, commaSpace); - ptr += lstrlenW(commaSpace); + lstrcpyW(ptr, L", "); + ptr += strlen(", "); } } *ptr = 0; @@ -2560,11 +2546,10 @@ typedef WCHAR * (*field_format_func)(PCCERT_CONTEXT cert);
static WCHAR *field_format_version(PCCERT_CONTEXT cert) { - static const WCHAR fmt[] = { 'V','%','d',0 }; WCHAR *buf = malloc(12 * sizeof(WCHAR));
if (buf) - swprintf(buf, 12, fmt, cert->pCertInfo->dwVersion); + swprintf(buf, 12, L"V%d", cert->pCertInfo->dwVersion); return buf; }
@@ -2574,12 +2559,11 @@ static WCHAR *format_hex_string(void *pb, DWORD cb)
if (buf) { - static const WCHAR fmt[] = { '%','0','2','x',' ',0 }; DWORD i; WCHAR *ptr;
for (i = 0, ptr = buf; i < cb; i++, ptr += 3) - swprintf(ptr, 4, fmt, ((BYTE *)pb)[i]); + swprintf(ptr, 4, L"%02x ", ((BYTE *)pb)[i]); } return buf; } @@ -2860,7 +2844,6 @@ static WCHAR *field_format_extension_hex_with_ascii(const CERT_EXTENSION *ext) str = malloc((lines * 8 * 4 + lines * 3 + 1) * sizeof(WCHAR)); if (str) { - static const WCHAR fmt[] = { '%','0','2','x',' ',0 }; DWORD i, j; WCHAR *ptr;
@@ -2868,7 +2851,7 @@ static WCHAR *field_format_extension_hex_with_ascii(const CERT_EXTENSION *ext) { /* Output as hex bytes first */ for (j = i; j < min(i + 8, ext->Value.cbData); j++, ptr += 3) - swprintf(ptr, 4, fmt, ext->Value.pbData[j]); + swprintf(ptr, 4, L"%02x ", ext->Value.pbData[j]); /* Pad the hex output with spaces for alignment */ if (j == ext->Value.cbData && j % 8) { @@ -4251,11 +4234,10 @@ static int CALLBACK cert_prop_sheet_proc(HWND hwnd, UINT msg, LPARAM lp) static BOOL show_cert_dialog(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo, CRYPT_PROVIDER_CERT *provCert, BOOL *pfPropertiesChanged) { - static const WCHAR riched[] = { 'r','i','c','h','e','d','2','0',0 }; DWORD nPages; PROPSHEETPAGEW *pages; BOOL ret = FALSE; - HMODULE lib = LoadLibraryW(riched); + HMODULE lib = LoadLibraryW(L"riched20");
nPages = pCertViewInfo->cPropSheetPages + 1; /* one for the General tab */ if (!(pCertViewInfo->dwFlags & CRYPTUI_HIDE_DETAILPAGE)) @@ -4500,12 +4482,7 @@ static BOOL is_ca_cert(PCCERT_CONTEXT cert, BOOL defaultIfNotSpecified)
static HCERTSTORE choose_store_for_cert(PCCERT_CONTEXT cert) { - LPCWSTR storeName; - - if (is_ca_cert(cert, TRUE)) - storeName = ca; - else - storeName = addressBook; + const WCHAR *storeName = is_ca_cert(cert, TRUE) ? L"CA" : L"AddressBook"; return CertOpenStore(CERT_STORE_PROV_SYSTEM_W, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER, storeName); } @@ -4549,7 +4526,7 @@ static BOOL import_crl(PCCRL_CONTEXT crl, HCERTSTORE hDestCertStore) else { if (!(store = CertOpenStore(CERT_STORE_PROV_SYSTEM_W, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, ca))) + CERT_SYSTEM_STORE_CURRENT_USER, L"CA"))) { WARN("unable to open certificate store\n"); return FALSE; @@ -4574,10 +4551,8 @@ static BOOL import_ctl(PCCTL_CONTEXT ctl, HCERTSTORE hDestCertStore) if (hDestCertStore) store = hDestCertStore; else { - static const WCHAR trust[] = { 'T','r','u','s','t',0 }; - if (!(store = CertOpenStore(CERT_STORE_PROV_SYSTEM_W, 0, 0, - CERT_SYSTEM_STORE_CURRENT_USER, trust))) + CERT_SYSTEM_STORE_CURRENT_USER, L"Trust"))) { WARN("unable to open certificate store\n"); return FALSE; @@ -4850,30 +4825,19 @@ static INT_PTR CALLBACK import_welcome_dlg_proc(HWND hwnd, UINT msg, WPARAM wp, return ret; }
-static const WCHAR filter_cert[] = { '*','.','c','e','r',';','*','.', - 'c','r','t',0 }; -static const WCHAR filter_pfx[] = { '*','.','p','f','x',';','*','.', - 'p','1','2',0 }; -static const WCHAR filter_crl[] = { '*','.','c','r','l',0 }; -static const WCHAR filter_ctl[] = { '*','.','s','t','l',0 }; -static const WCHAR filter_serialized_store[] = { '*','.','s','s','t',0 }; -static const WCHAR filter_cms[] = { '*','.','s','p','c',';','*','.', - 'p','7','b',0 }; -static const WCHAR filter_all[] = { '*','.','*',0 }; - static const struct { int id; DWORD allowFlags; LPCWSTR filter; } import_filters[] = { - { IDS_IMPORT_FILTER_CERT, CRYPTUI_WIZ_IMPORT_ALLOW_CERT, filter_cert }, - { IDS_IMPORT_FILTER_PFX, 0, filter_pfx }, - { IDS_IMPORT_FILTER_CRL, CRYPTUI_WIZ_IMPORT_ALLOW_CRL, filter_crl }, - { IDS_IMPORT_FILTER_CTL, CRYPTUI_WIZ_IMPORT_ALLOW_CTL, filter_ctl }, - { IDS_IMPORT_FILTER_SERIALIZED_STORE, 0, filter_serialized_store }, - { IDS_IMPORT_FILTER_CMS, 0, filter_cms }, - { IDS_IMPORT_FILTER_ALL, 0, filter_all }, + { IDS_IMPORT_FILTER_CERT, CRYPTUI_WIZ_IMPORT_ALLOW_CERT, L"*.cer;*.crt" }, + { IDS_IMPORT_FILTER_PFX, 0, L"*.pfx;*.p12" }, + { IDS_IMPORT_FILTER_CRL, CRYPTUI_WIZ_IMPORT_ALLOW_CRL, L"*.crl" }, + { IDS_IMPORT_FILTER_CTL, CRYPTUI_WIZ_IMPORT_ALLOW_CTL, L"*.stl" }, + { IDS_IMPORT_FILTER_SERIALIZED_STORE, 0, L"*.sst" }, + { IDS_IMPORT_FILTER_CMS, 0, L"*.spc;*.p7b" }, + { IDS_IMPORT_FILTER_ALL, 0, L"*.*" }, };
static WCHAR *make_import_file_filter(DWORD dwFlags) @@ -5975,12 +5939,6 @@ static INT_PTR CALLBACK export_password_dlg_proc(HWND hwnd, UINT msg, static LPWSTR export_append_extension(const struct ExportWizData *data, LPWSTR fileName) { - static const WCHAR cer[] = { '.','c','e','r',0 }; - static const WCHAR crl[] = { '.','c','r','l',0 }; - static const WCHAR ctl[] = { '.','c','t','l',0 }; - static const WCHAR p7b[] = { '.','p','7','b',0 }; - static const WCHAR pfx[] = { '.','p','f','x',0 }; - static const WCHAR sst[] = { '.','s','s','t',0 }; LPCWSTR extension; LPWSTR dot; BOOL appendExtension; @@ -5988,25 +5946,25 @@ static LPWSTR export_append_extension(const struct ExportWizData *data, switch (data->contextInfo.dwExportFormat) { case CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7: - extension = p7b; + extension = L".p7b"; break; case CRYPTUI_WIZ_EXPORT_FORMAT_PFX: - extension = pfx; + extension = L".pfx"; break; default: switch (data->exportInfo.dwSubjectChoice) { case CRYPTUI_WIZ_EXPORT_CRL_CONTEXT: - extension = crl; + extension = L".crl"; break; case CRYPTUI_WIZ_EXPORT_CTL_CONTEXT: - extension = ctl; + extension = L".ctl"; break; case CRYPTUI_WIZ_EXPORT_CERT_STORE: - extension = sst; + extension = L".sst"; break; default: - extension = cer; + extension = L".cer"; } } dot = wcsrchr(fileName, '.'); @@ -6099,13 +6057,6 @@ static BOOL export_validate_filename(HWND hwnd, struct ExportWizData *data, return ret; }
-static const WCHAR export_filter_cert[] = { '*','.','c','e','r',0 }; -static const WCHAR export_filter_crl[] = { '*','.','c','r','l',0 }; -static const WCHAR export_filter_ctl[] = { '*','.','s','t','l',0 }; -static const WCHAR export_filter_cms[] = { '*','.','p','7','b',0 }; -static const WCHAR export_filter_pfx[] = { '*','.','p','f','x',0 }; -static const WCHAR export_filter_sst[] = { '*','.','s','s','t',0 }; - static WCHAR *make_export_file_filter(DWORD exportFormat, DWORD subjectChoice) { int baseLen, allLen, totalLen = 2, baseID; @@ -6116,41 +6067,41 @@ static WCHAR *make_export_file_filter(DWORD exportFormat, DWORD subjectChoice) { case CRYPTUI_WIZ_EXPORT_FORMAT_BASE64: baseID = IDS_EXPORT_FILTER_BASE64_CERT; - filterStr = export_filter_cert; + filterStr = L"*.cer"; break; case CRYPTUI_WIZ_EXPORT_FORMAT_PFX: baseID = IDS_EXPORT_FILTER_PFX; - filterStr = export_filter_pfx; + filterStr = L"*.pfx"; break; case CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7: baseID = IDS_EXPORT_FILTER_CMS; - filterStr = export_filter_cms; + filterStr = L"*.p7b"; break; default: switch (subjectChoice) { case CRYPTUI_WIZ_EXPORT_CRL_CONTEXT: baseID = IDS_EXPORT_FILTER_CRL; - filterStr = export_filter_crl; + filterStr = L"*.crl"; break; case CRYPTUI_WIZ_EXPORT_CTL_CONTEXT: baseID = IDS_EXPORT_FILTER_CTL; - filterStr = export_filter_ctl; + filterStr = L"*.stl"; break; case CRYPTUI_WIZ_EXPORT_CERT_STORE: baseID = IDS_EXPORT_FILTER_SERIALIZED_CERT_STORE; - filterStr = export_filter_sst; + filterStr = L"*.sst"; break; default: baseID = IDS_EXPORT_FILTER_CERT; - filterStr = export_filter_cert; + filterStr = L"*.cer"; break; } } baseLen = LoadStringW(hInstance, baseID, (LPWSTR)&baseFilter, 0); totalLen += baseLen + lstrlenW(filterStr) + 2; allLen = LoadStringW(hInstance, IDS_IMPORT_FILTER_ALL, (LPWSTR)&all, 0); - totalLen += allLen + lstrlenW(filter_all) + 2; + totalLen += allLen + ARRAY_SIZE(L"*.*") + 1; filter = malloc(totalLen * sizeof(WCHAR)); if (filter) { @@ -6165,8 +6116,8 @@ static WCHAR *make_export_file_filter(DWORD exportFormat, DWORD subjectChoice) memcpy(ptr, all, allLen * sizeof(WCHAR)); ptr += allLen; *ptr++ = 0; - lstrcpyW(ptr, filter_all); - ptr += lstrlenW(filter_all) + 1; + lstrcpyW(ptr, L"*.*"); + ptr += ARRAY_SIZE(L"*.*"); *ptr++ = 0; } return filter;
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=151087
Your paranoid android.
=== debian11b (64 bit WoW report) ===
user32: input.c:4306: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 0000000001BB00FA, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032 msg.c:6995: Test failed: SetFocus(hwnd) on a button: 3: the winevent_hook 0x8005 was expected, but got hook 0x0005 instead msg.c:6995: Test failed: SetFocus(hwnd) on a button: 3: the winevent_hook 0x8005 was expected, but got winevent_hook 0x0003 instead msg.c:6995: Test failed: SetFocus(hwnd) on a button: 3: the winevent_hook 0x8005 was expected, but got msg 0x030f instead msg.c:6995: Test failed: SetFocus(hwnd) on a button: 3: the winevent_hook 0x8005 was expected, but got msg 0x001c instead msg.c:6995: Test failed: SetFocus(hwnd) on a button: 3: the winevent_hook 0x8005 was expected, but got msg 0x0086 instead msg.c:6995: Test failed: SetFocus(hwnd) on a button: 3: the winevent_hook 0x8005 was expected, but got msg 0x0006 instead msg.c:6995: Test failed: SetFocus(hwnd) on a button: 3: the winevent_hook 0x8005 was expected, but got hook 0x0009 instead msg.c:12728: Test failed: Got expected 0. msg.c:12743: Test failed: Got expected 0.