File susepatches.patch of Package wine-lol
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;
}