1717f72fbc
OBS-URL: https://build.opensuse.org/package/show/Emulators/wine?expand=0&rev=f48cdda33d5dbe74118fb9f6a7519d69
336 lines
18 KiB
Diff
336 lines
18 KiB
Diff
diff --git a/dlls/crypt32/str.c b/dlls/crypt32/str.c
|
|
index 914ccaa..6d0fb5b 100644
|
|
--- a/dlls/crypt32/str.c
|
|
+++ b/dlls/crypt32/str.c
|
|
@@ -190,6 +190,7 @@ DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
|
|
static const char crlfSep[] = "\r\n";
|
|
static const char plusSep[] = " + ";
|
|
static const char spaceSep[] = " ";
|
|
+ static const char quoteSep[] = "\"";
|
|
DWORD ret = 0, bytes = 0;
|
|
BOOL bRet;
|
|
CERT_NAME_INFO *info;
|
|
@@ -204,7 +205,7 @@ DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
|
|
if (bRet)
|
|
{
|
|
DWORD i, j, sepLen, rdnSepLen;
|
|
- LPCSTR sep, rdnSep;
|
|
+ LPCSTR sep, rdnSep, quote;
|
|
BOOL reverse = dwStrType & CERT_NAME_STR_REVERSE_FLAG;
|
|
const CERT_RDN *rdn = info->rgRDN;
|
|
|
|
@@ -222,11 +223,16 @@ DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
|
|
else
|
|
rdnSep = plusSep;
|
|
rdnSepLen = strlen(rdnSep);
|
|
+ if (dwStrType & CERT_NAME_STR_NO_QUOTING_FLAG)
|
|
+ quote = NULL;
|
|
+ else
|
|
+ quote = quoteSep;
|
|
for (i = 0; (!psz || ret < csz) && i < info->cRDN; i++)
|
|
{
|
|
for (j = 0; (!psz || ret < csz) && j < rdn->cRDNAttr; j++)
|
|
{
|
|
DWORD chars;
|
|
+ int needquote = 0;
|
|
char prefixBuf[10]; /* big enough for GivenName */
|
|
LPCSTR prefix = NULL;
|
|
|
|
@@ -255,13 +261,44 @@ DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName,
|
|
psz ? psz + ret : NULL, psz ? csz - ret - 1 : 0);
|
|
ret += chars;
|
|
}
|
|
- /* FIXME: handle quoting */
|
|
+ /* FIXME: quoting still misses " (which is replaced by "") */
|
|
chars = CertRDNValueToStrA(
|
|
rdn->rgRDNAttr[j].dwValueType,
|
|
&rdn->rgRDNAttr[j].Value, psz ? psz + ret : NULL,
|
|
psz ? csz - ret : 0);
|
|
- if (chars)
|
|
+
|
|
+ /* poor mans memmem(), for , seperation */
|
|
+ if (psz && quote && chars) {
|
|
+ int xx;
|
|
+ for (xx=0;xx<chars-1;xx++) {
|
|
+ if ((psz[ret+xx] == ',') ||
|
|
+ (psz[ret+xx] == ';'))
|
|
+ {
|
|
+ needquote = 1;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ if (psz && quote && chars && needquote) {
|
|
+ /* - 1 is needed to account for the null terminator. */
|
|
+ if (psz && ret < csz - strlen(quote) - 1)
|
|
+ memcpy (psz + ret, quote, strlen(quote));
|
|
+ ret += strlen(quote);
|
|
+
|
|
+ chars = CertRDNValueToStrA(
|
|
+ rdn->rgRDNAttr[j].dwValueType,
|
|
+ &rdn->rgRDNAttr[j].Value, psz ? psz + ret : NULL,
|
|
+ psz ? csz - ret : 0);
|
|
ret += chars - 1;
|
|
+ if (psz && ret < csz - strlen(quote) - 1)
|
|
+ memcpy (psz + ret, quote, strlen(quote));
|
|
+ ret += strlen(quote);
|
|
+ } else {
|
|
+ if (chars)
|
|
+ ret += chars - 1;
|
|
+ }
|
|
+
|
|
+ /* FIXME: handle quoting */
|
|
if (j < rdn->cRDNAttr - 1)
|
|
{
|
|
if (psz && ret < csz - rdnSepLen - 1)
|
|
@@ -353,6 +390,7 @@ DWORD cert_name_to_str_with_indent(DWORD dwCertEncodingType, DWORD indentLevel,
|
|
static const WCHAR crlfSep[] = { '\r','\n',0 };
|
|
static const WCHAR plusSep[] = { ' ','+',' ',0 };
|
|
static const WCHAR spaceSep[] = { ' ',0 };
|
|
+ static const WCHAR quoteSep[] = { '"',0 };
|
|
DWORD ret = 0, bytes = 0;
|
|
BOOL bRet;
|
|
CERT_NAME_INFO *info;
|
|
@@ -365,7 +403,7 @@ DWORD cert_name_to_str_with_indent(DWORD dwCertEncodingType, DWORD indentLevel,
|
|
if (bRet)
|
|
{
|
|
DWORD i, j, sepLen, rdnSepLen;
|
|
- LPCWSTR sep, rdnSep;
|
|
+ LPCWSTR sep, rdnSep, quote;
|
|
BOOL reverse = dwStrType & CERT_NAME_STR_REVERSE_FLAG;
|
|
const CERT_RDN *rdn = info->rgRDN;
|
|
|
|
@@ -383,11 +421,16 @@ DWORD cert_name_to_str_with_indent(DWORD dwCertEncodingType, DWORD indentLevel,
|
|
else
|
|
rdnSep = plusSep;
|
|
rdnSepLen = lstrlenW(rdnSep);
|
|
+ if (dwStrType & CERT_NAME_STR_NO_QUOTING_FLAG)
|
|
+ quote = NULL;
|
|
+ else
|
|
+ quote = quoteSep;
|
|
for (i = 0; (!psz || ret < csz) && i < info->cRDN; i++)
|
|
{
|
|
for (j = 0; (!psz || ret < csz) && j < rdn->cRDNAttr; j++)
|
|
{
|
|
DWORD chars;
|
|
+ int needquote = 0;
|
|
LPCSTR prefixA = NULL;
|
|
LPCWSTR prefixW = NULL;
|
|
|
|
@@ -435,13 +478,43 @@ DWORD cert_name_to_str_with_indent(DWORD dwCertEncodingType, DWORD indentLevel,
|
|
psz ? psz + ret : NULL, psz ? csz - ret - 1 : 0);
|
|
ret += chars;
|
|
}
|
|
- /* FIXME: handle quoting */
|
|
+ /* FIXME: quoting still misses " (which is replaced by "") */
|
|
chars = CertRDNValueToStrW(
|
|
rdn->rgRDNAttr[j].dwValueType,
|
|
&rdn->rgRDNAttr[j].Value, psz ? psz + ret : NULL,
|
|
psz ? csz - ret : 0);
|
|
- if (chars)
|
|
+
|
|
+ /* poor mans memmem(), for , seperation */
|
|
+ if (psz && quote && chars) {
|
|
+ int xx;
|
|
+ for (xx=0;xx<chars-1;xx++) {
|
|
+ if ((psz[ret+xx] == ',') ||
|
|
+ (psz[ret+xx] == ';'))
|
|
+ {
|
|
+ needquote = 1;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ if (psz && quote && chars && needquote) {
|
|
+ /* - 1 is needed to account for the NULL terminator. */
|
|
+ if (psz && ret < csz - lstrlenW(quote) - 1)
|
|
+ memcpy (psz + ret, quote, lstrlenW(quote) * sizeof(WCHAR));
|
|
+ ret += lstrlenW(quote);
|
|
+
|
|
+ chars = CertRDNValueToStrW(
|
|
+ rdn->rgRDNAttr[j].dwValueType,
|
|
+ &rdn->rgRDNAttr[j].Value, psz ? psz + ret : NULL,
|
|
+ psz ? csz - ret : 0);
|
|
ret += chars - 1;
|
|
+ if (psz && ret < csz - lstrlenW(quote) - 1)
|
|
+ memcpy (psz + ret, quote, lstrlenW(quote) * sizeof(WCHAR));
|
|
+ ret += lstrlenW(quote);
|
|
+ } else {
|
|
+ if (chars)
|
|
+ ret += chars - 1;
|
|
+ }
|
|
+
|
|
if (j < rdn->cRDNAttr - 1)
|
|
{
|
|
if (psz && ret < csz - rdnSepLen - 1)
|
|
diff --git a/dlls/crypt32/tests/str.c b/dlls/crypt32/tests/str.c
|
|
index ebc3342..2549bcc 100644
|
|
--- a/dlls/crypt32/tests/str.c
|
|
+++ b/dlls/crypt32/tests/str.c
|
|
@@ -67,12 +67,12 @@ static const BYTE cert[] =
|
|
0x73,0x6f,0x74,0x61,0x31,0x14,0x30,0x12,0x6,0x3,0x55,0x4,0x7,0x13,0xb,0x4d,
|
|
0x69,0x6e,0x6e,0x65,0x61,0x70,0x6f,0x6c,0x69,0x73,0x31,0x14,0x30,0x12,0x6,0x3,
|
|
0x55,0x4,0xa,0x13,0xb,0x43,0x6f,0x64,0x65,0x57,0x65,0x61,0x76,0x65,0x72,0x73,
|
|
- 0x31,0x19,0x30,0x17,0x6,0x3,0x55,0x4,0xb,0x13,0x10,0x57,0x69,0x6e,0x65,0x20,
|
|
+ 0x31,0x19,0x30,0x17,0x6,0x3,0x55,0x4,0xb,0x13,0x10,0x57,0x69,0x6e,0x65,0x2c,
|
|
0x44,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,0x65,0x6e,0x74,0x31,0x12,0x30,0x10,
|
|
0x6,0x3,0x55,0x4,0x3,0x13,0x9,0x6c,0x6f,0x63,0x61,0x6c,0x68,0x6f,0x73,0x74,
|
|
0x31,0x23,0x30,0x21,0x6,0x9,0x2a,0x86,0x48,0x86,0xf7,0xd,0x1,0x9,0x1,0x16,
|
|
0x14,0x61,0x72,0x69,0x63,0x40,0x63,0x6f,0x64,0x65,0x77,0x65,0x61,0x76,0x65,
|
|
- 0x72,0x73,0x2e,0x63,0x6f,0x6d,0x30,0x1e,0x17,0xd,0x30,0x36,0x30,0x31,0x32,
|
|
+ 0x72,0x73,0x3b,0x63,0x6f,0x6d,0x30,0x1e,0x17,0xd,0x30,0x36,0x30,0x31,0x32,
|
|
0x35,0x31,0x33,0x35,0x37,0x32,0x34,0x5a,0x17,0xd,0x30,0x36,0x30,0x32,0x32,
|
|
0x34,0x31,0x33,0x35,0x37,0x32,0x34,0x5a,0x30,0x81,0xa1,0x31,0xb,0x30,0x9,0x6,
|
|
0x3,0x55,0x4,0x6,0x13,0x2,0x55,0x53,0x31,0x12,0x30,0x10,0x6,0x3,0x55,0x4,0x8,
|
|
@@ -80,11 +80,11 @@ static const BYTE cert[] =
|
|
0x3,0x55,0x4,0x7,0x13,0xb,0x4d,0x69,0x6e,0x6e,0x65,0x61,0x70,0x6f,0x6c,0x69,
|
|
0x73,0x31,0x14,0x30,0x12,0x6,0x3,0x55,0x4,0xa,0x13,0xb,0x43,0x6f,0x64,0x65,
|
|
0x57,0x65,0x61,0x76,0x65,0x72,0x73,0x31,0x19,0x30,0x17,0x6,0x3,0x55,0x4,0xb,
|
|
- 0x13,0x10,0x57,0x69,0x6e,0x65,0x20,0x44,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,
|
|
+ 0x13,0x10,0x57,0x69,0x6e,0x65,0x2c,0x44,0x65,0x76,0x65,0x6c,0x6f,0x70,0x6d,
|
|
0x65,0x6e,0x74,0x31,0x12,0x30,0x10,0x6,0x3,0x55,0x4,0x3,0x13,0x9,0x6c,0x6f,
|
|
0x63,0x61,0x6c,0x68,0x6f,0x73,0x74,0x31,0x23,0x30,0x21,0x6,0x9,0x2a,0x86,0x48,
|
|
0x86,0xf7,0xd,0x1,0x9,0x1,0x16,0x14,0x61,0x72,0x69,0x63,0x40,0x63,0x6f,0x64,
|
|
- 0x65,0x77,0x65,0x61,0x76,0x65,0x72,0x73,0x2e,0x63,0x6f,0x6d,0x30,0x81,0x9f,
|
|
+ 0x65,0x77,0x65,0x61,0x76,0x65,0x72,0x73,0x3b,0x63,0x6f,0x6d,0x30,0x81,0x9f,
|
|
0x30,0xd,0x6,0x9,0x2a,0x86,0x48,0x86,0xf7,0xd,0x1,0x1,0x1,0x5,0x0,0x3,0x81,
|
|
0x8d,0x0,0x30,0x81,0x89,0x2,0x81,0x81,0x0,0x9b,0xb5,0x8f,0xaf,0xfb,0x9a,0xaf,
|
|
0xdc,0xa2,0x4d,0xb1,0xc8,0x72,0x44,0xef,0x79,0x7f,0x28,0xb6,0xfe,0x50,0xdc,
|
|
@@ -107,71 +107,71 @@ static const BYTE cert[] =
|
|
0x91,0x8a,0xf8,0x5,0xef,0x5b,0x3b,0x49,0xbf,0x5f,0x2b};
|
|
|
|
static char issuerStr[] =
|
|
- "US, Minnesota, Minneapolis, CodeWeavers, Wine Development, localhost, aric@codeweavers.com";
|
|
+ "US, Minnesota, Minneapolis, CodeWeavers, \"Wine,Development\", localhost, \"aric@codeweavers;com\"";
|
|
static char issuerStrSemicolon[] =
|
|
- "US; Minnesota; Minneapolis; CodeWeavers; Wine Development; localhost; aric@codeweavers.com";
|
|
+ "US; Minnesota; Minneapolis; CodeWeavers; \"Wine,Development\"; localhost; \"aric@codeweavers;com\"";
|
|
static char issuerStrCRLF[] =
|
|
- "US\r\nMinnesota\r\nMinneapolis\r\nCodeWeavers\r\nWine Development\r\nlocalhost\r\naric@codeweavers.com";
|
|
+ "US\r\nMinnesota\r\nMinneapolis\r\nCodeWeavers\r\n\"Wine,Development\"\r\nlocalhost\r\n\"aric@codeweavers;com\"";
|
|
static char subjectStr[] =
|
|
- "2.5.4.6=US, 2.5.4.8=Minnesota, 2.5.4.7=Minneapolis, 2.5.4.10=CodeWeavers, 2.5.4.11=Wine Development, 2.5.4.3=localhost, 1.2.840.113549.1.9.1=aric@codeweavers.com";
|
|
+ "2.5.4.6=US, 2.5.4.8=Minnesota, 2.5.4.7=Minneapolis, 2.5.4.10=CodeWeavers, 2.5.4.11=\"Wine,Development\", 2.5.4.3=localhost, 1.2.840.113549.1.9.1=\"aric@codeweavers;com\"";
|
|
static char subjectStrSemicolon[] =
|
|
- "2.5.4.6=US; 2.5.4.8=Minnesota; 2.5.4.7=Minneapolis; 2.5.4.10=CodeWeavers; 2.5.4.11=Wine Development; 2.5.4.3=localhost; 1.2.840.113549.1.9.1=aric@codeweavers.com";
|
|
+ "2.5.4.6=US; 2.5.4.8=Minnesota; 2.5.4.7=Minneapolis; 2.5.4.10=CodeWeavers; 2.5.4.11=\"Wine,Development\"; 2.5.4.3=localhost; 1.2.840.113549.1.9.1=\"aric@codeweavers;com\"";
|
|
static char subjectStrCRLF[] =
|
|
- "2.5.4.6=US\r\n2.5.4.8=Minnesota\r\n2.5.4.7=Minneapolis\r\n2.5.4.10=CodeWeavers\r\n2.5.4.11=Wine Development\r\n2.5.4.3=localhost\r\n1.2.840.113549.1.9.1=aric@codeweavers.com";
|
|
-static char x500SubjectStr[] = "C=US, S=Minnesota, L=Minneapolis, O=CodeWeavers, OU=Wine Development, CN=localhost, E=aric@codeweavers.com";
|
|
-static char x500SubjectStrSemicolonReverse[] = "E=aric@codeweavers.com; CN=localhost; OU=Wine Development; O=CodeWeavers; L=Minneapolis; S=Minnesota; C=US";
|
|
+ "2.5.4.6=US\r\n2.5.4.8=Minnesota\r\n2.5.4.7=Minneapolis\r\n2.5.4.10=CodeWeavers\r\n2.5.4.11=\"Wine,Development\"\r\n2.5.4.3=localhost\r\n1.2.840.113549.1.9.1=\"aric@codeweavers;com\"";
|
|
+static char x500SubjectStr[] = "C=US, S=Minnesota, L=Minneapolis, O=CodeWeavers, OU=\"Wine,Development\", CN=localhost, E=\"aric@codeweavers;com\"";
|
|
+static char x500SubjectStrSemicolonReverse[] = "E=\"aric@codeweavers;com\"; CN=localhost; OU=\"Wine,Development\"; O=CodeWeavers; L=Minneapolis; S=Minnesota; C=US";
|
|
static WCHAR issuerStrW[] = {
|
|
'U','S',',',' ','M','i','n','n','e','s','o','t','a',',',' ','M','i','n','n',
|
|
'e','a','p','o','l','i','s',',',' ','C','o','d','e','W','e','a','v','e','r',
|
|
- 's',',',' ','W','i','n','e',' ','D','e','v','e','l','o','p','m','e','n','t',
|
|
- ',',' ','l','o','c','a','l','h','o','s','t',',',' ','a','r','i','c','@','c',
|
|
- 'o','d','e','w','e','a','v','e','r','s','.','c','o','m',0 };
|
|
+ 's',',',' ','"','W','i','n','e',',','D','e','v','e','l','o','p','m','e','n','t','"',
|
|
+ ',',' ','l','o','c','a','l','h','o','s','t',',',' ','"','a','r','i','c','@','c',
|
|
+ 'o','d','e','w','e','a','v','e','r','s',';','c','o','m','"',0 };
|
|
static WCHAR issuerStrSemicolonW[] = {
|
|
'U','S',';',' ','M','i','n','n','e','s','o','t','a',';',' ','M','i','n','n',
|
|
'e','a','p','o','l','i','s',';',' ','C','o','d','e','W','e','a','v','e','r',
|
|
- 's',';',' ','W','i','n','e',' ','D','e','v','e','l','o','p','m','e','n','t',
|
|
- ';',' ','l','o','c','a','l','h','o','s','t',';',' ','a','r','i','c','@','c',
|
|
- 'o','d','e','w','e','a','v','e','r','s','.','c','o','m',0 };
|
|
+ 's',';',' ','"','W','i','n','e',',','D','e','v','e','l','o','p','m','e','n','t','"',
|
|
+ ';',' ','l','o','c','a','l','h','o','s','t',';',' ','"','a','r','i','c','@','c',
|
|
+ 'o','d','e','w','e','a','v','e','r','s',';','c','o','m','"',0 };
|
|
static WCHAR issuerStrCRLFW[] = {
|
|
'U','S','\r','\n','M','i','n','n','e','s','o','t','a','\r','\n','M','i','n',
|
|
'n','e','a','p','o','l','i','s','\r','\n','C','o','d','e','W','e','a','v','e',
|
|
- 'r','s','\r','\n','W','i','n','e',' ','D','e','v','e','l','o','p','m','e','n',
|
|
- 't','\r','\n','l','o','c','a','l','h','o','s','t','\r','\n','a','r','i','c',
|
|
- '@','c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0 };
|
|
+ 'r','s','\r','\n','"','W','i','n','e',',','D','e','v','e','l','o','p','m','e','n',
|
|
+ 't','"','\r','\n','l','o','c','a','l','h','o','s','t','\r','\n','"','a','r','i','c',
|
|
+ '@','c','o','d','e','w','e','a','v','e','r','s',';','c','o','m','"',0 };
|
|
static WCHAR subjectStrW[] = {
|
|
'2','.','5','.','4','.','6','=','U','S',',',' ','2','.','5','.','4','.','8',
|
|
'=','M','i','n','n','e','s','o','t','a',',',' ','2','.','5','.','4','.','7',
|
|
'=','M','i','n','n','e','a','p','o','l','i','s',',',' ','2','.','5','.','4',
|
|
'.','1','0','=','C','o','d','e','W','e','a','v','e','r','s',',',' ','2','.',
|
|
- '5','.','4','.','1','1','=','W','i','n','e',' ','D','e','v','e','l','o','p',
|
|
- 'm','e','n','t',',',' ','2','.','5','.','4','.','3','=','l','o','c','a','l',
|
|
+ '5','.','4','.','1','1','=','"','W','i','n','e',',','D','e','v','e','l','o','p',
|
|
+ 'm','e','n','t','"',',',' ','2','.','5','.','4','.','3','=','l','o','c','a','l',
|
|
'h','o','s','t',',',' ','1','.','2','.','8','4','0','.','1','1','3','5','4',
|
|
- '9','.','1','.','9','.','1','=','a','r','i','c','@','c','o','d','e','w','e',
|
|
- 'a','v','e','r','s','.','c','o','m',0 };
|
|
+ '9','.','1','.','9','.','1','=','"','a','r','i','c','@','c','o','d','e','w','e',
|
|
+ 'a','v','e','r','s',';','c','o','m','"',0 };
|
|
static WCHAR subjectStrSemicolonW[] = {
|
|
'2','.','5','.','4','.','6','=','U','S',';',' ','2','.','5','.','4','.','8',
|
|
'=','M','i','n','n','e','s','o','t','a',';',' ','2','.','5','.','4','.','7',
|
|
'=','M','i','n','n','e','a','p','o','l','i','s',';',' ','2','.','5','.','4',
|
|
'.','1','0','=','C','o','d','e','W','e','a','v','e','r','s',';',' ','2','.',
|
|
- '5','.','4','.','1','1','=','W','i','n','e',' ','D','e','v','e','l','o','p',
|
|
- 'm','e','n','t',';',' ','2','.','5','.','4','.','3','=','l','o','c','a','l',
|
|
+ '5','.','4','.','1','1','=','"','W','i','n','e',',','D','e','v','e','l','o','p',
|
|
+ 'm','e','n','t','"',';',' ','2','.','5','.','4','.','3','=','l','o','c','a','l',
|
|
'h','o','s','t',';',' ','1','.','2','.','8','4','0','.','1','1','3','5','4',
|
|
- '9','.','1','.','9','.','1','=','a','r','i','c','@','c','o','d','e','w','e',
|
|
- 'a','v','e','r','s','.','c','o','m',0 };
|
|
+ '9','.','1','.','9','.','1','=','"','a','r','i','c','@','c','o','d','e','w','e',
|
|
+ 'a','v','e','r','s',';','c','o','m','"',0 };
|
|
static WCHAR subjectStrCRLFW[] = {
|
|
'2','.','5','.','4','.','6','=','U','S','\r','\n','2','.','5','.','4','.','8',
|
|
'=','M','i','n','n','e','s','o','t','a','\r','\n','2','.','5','.','4','.','7',
|
|
'=','M','i','n','n','e','a','p','o','l','i','s','\r','\n','2','.','5','.','4',
|
|
'.','1','0','=','C','o','d','e','W','e','a','v','e','r','s','\r','\n','2','.',
|
|
- '5','.','4','.','1','1','=','W','i','n','e',' ','D','e','v','e','l','o','p',
|
|
- 'm','e','n','t','\r','\n','2','.','5','.','4','.','3','=','l','o','c','a','l',
|
|
+ '5','.','4','.','1','1','=','"','W','i','n','e',',','D','e','v','e','l','o','p',
|
|
+ 'm','e','n','t','"','\r','\n','2','.','5','.','4','.','3','=','l','o','c','a','l',
|
|
'h','o','s','t','\r','\n','1','.','2','.','8','4','0','.','1','1','3','5','4',
|
|
- '9','.','1','.','9','.','1','=','a','r','i','c','@','c','o','d','e','w','e',
|
|
- 'a','v','e','r','s','.','c','o','m',0 };
|
|
+ '9','.','1','.','9','.','1','=','"','a','r','i','c','@','c','o','d','e','w','e',
|
|
+ 'a','v','e','r','s',';','c','o','m','"',0 };
|
|
static WCHAR x500SubjectStrSemicolonReverseW[] = {
|
|
- 'E','=','a','r','i','c','@','c','o','d','e','w','e','a','v','e','r','s','.','c',
|
|
- 'o','m',';',' ','C','N','=','l','o','c','a','l','h','o','s','t',';',' ','O','U',
|
|
- '=','W','i','n','e',' ','D','e','v','e','l','o','p','m','e','n','t',';',' ','O',
|
|
+ 'E','=','"','a','r','i','c','@','c','o','d','e','w','e','a','v','e','r','s',';','c',
|
|
+ 'o','m','"',';',' ','C','N','=','l','o','c','a','l','h','o','s','t',';',' ','O','U',
|
|
+ '=','"','W','i','n','e',',','D','e','v','e','l','o','p','m','e','n','t','"',';',' ','O',
|
|
'=','C','o','d','e','W','e','a','v','e','r','s',';',' ','L','=','M','i','n','n',
|
|
'e','a','p','o','l','i','s',';',' ','S','=','M','i','n','n','e','s','o','t','a',
|
|
';',' ','C','=','U','S',0 };
|
|
@@ -399,11 +399,8 @@ static void test_NameToStrConversionW(PCERT_NAME_BLOB pName, DWORD dwStrType,
|
|
sizeof(buffer) / sizeof(buffer[0]));
|
|
ok(i == lstrlenW(expected) + 1, "Expected %d chars, got %d\n",
|
|
lstrlenW(expected) + 1, i);
|
|
- ok(!lstrcmpW(buffer, expected), "Unexpected value\n");
|
|
-#ifdef DUMP_STRINGS
|
|
- trace("Expected %s, got %s\n",
|
|
+ ok(!lstrcmpW(buffer, expected), "Expected %s, got %s\n",
|
|
wine_dbgstr_w(expected), wine_dbgstr_w(buffer));
|
|
-#endif
|
|
}
|
|
|
|
static void test_CertNameToStrW(void)
|
|
diff --git a/dlls/shell32/pidl.c b/dlls/shell32/pidl.c
|
|
index 1c9cf22..054683c 100644
|
|
--- a/dlls/shell32/pidl.c
|
|
+++ b/dlls/shell32/pidl.c
|
|
@@ -1753,13 +1753,13 @@ LPITEMIDLIST _ILCreateEntireNetwork(void)
|
|
|
|
TRACE("\n");
|
|
|
|
- pidlOut = _ILAlloc(PT_NETWORK, FIELD_OFFSET(PIDLDATA, u.network.szNames[sizeof("Entire Network")]));
|
|
+ pidlOut = _ILAlloc(PT_NETWORK, FIELD_OFFSET(PIDLDATA, u.network.szNames[strlen("Entire Network")+1]));
|
|
if (pidlOut)
|
|
{
|
|
LPPIDLDATA pData = _ILGetDataPointer(pidlOut);
|
|
|
|
pData->u.network.dummy = 0;
|
|
- strcpy(pData->u.network.szNames, "Entire Network");
|
|
+ memcpy(pData->u.network.szNames, "Entire Network", strlen("Entire Network")+1);
|
|
}
|
|
return pidlOut;
|
|
}
|