[Bug 30491] New: Microsoft Office Communicator 2007 R2 Trial fails to parse rule XML from resource file (BSTR/UTF-16 passed to SAXXMLReader)

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Apr 20 16:19:56 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=30491

             Bug #: 30491
           Summary: Microsoft Office Communicator 2007 R2 Trial fails to
                    parse rule XML from resource file (BSTR/UTF-16 passed
                    to SAXXMLReader)
           Product: Wine
           Version: 1.5.2
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: msxml3
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: focht at gmx.net
    Classification: Unclassified


Hello,

with bug 30313 fixed, it now runs into bug 29392

--- snip ---
fixme:actctx:parse_depend_manifests Could not find dependent assembly L"UccApi"
(2.0.0.0)
fixme:activeds:ADsOpenObject
(L"LDAP://rootDSE",(null),1,{fd8256d0-fd15-11ce-abc4-02608c9e7553},0x32e7f0)!stub
wine: Call from 0x7b839357 to unimplemented function
msvcp90.dll.??0?$basic_ostringstream at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAE at H@Z,
aborting
--- snip ---

After working around (VC++ 2008 runtime), it fails while trying to parse rule
XML from embedded resource file:  

--- snip ---
...
0028:Call KERNEL32.MultiByteToWideChar(0000fde9,00000008,0018ddb0
"<categoryPublicationManifest\r\n 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n 
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\r\n 
xmlns=\"http://schemas.microsoft.com/2008/09/sip/categoryPublicationManifest\"\r\n
 minSupportedClientVersion=\"2.0.0.0\">\r\n  <publicationList>\r\n   
<"...,00007a01,001957f8,00007a01) ret=21fbb99c
0028:Ret  KERNEL32.MultiByteToWideChar() retval=00007a01 ret=21fbb99c
0028:Call oleaut32.SysAllocStringLen(001957f8
L"<categoryPublicationManifest\r\n 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n 
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\r\n 
xmlns=\"http://schemas.microsoft.com/2008/09/sip/categoryPublicationManifest\"\r\n
 minSupportedClientVersion=\"2.0.0.0\">\r\n  <publicationList>\r\n   
<"...,00007a01) ret=21fbcb0c
0028:Call ntdll.RtlAllocateHeap(00110000,00000000,0000f408) ret=7e92b022
0028:Ret  ntdll.RtlAllocateHeap() retval=001a4c80 ret=7e92b022
0028:Ret  oleaut32.SysAllocStringLen() retval=001a4c84 ret=21fbcb0c
...
0028:trace:msxml:internal_parse (0x15a098)->({VT_BSTR:
L"<categoryPublicationManifest\r\n 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n 
xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\r\n 
xmlns=\"http://schemas.microsoft.com/200)
0028:Call ntdll.RtlFreeHeap(00110000,00000000,00000000) ret=7d77632a
0028:Ret  ntdll.RtlFreeHeap() retval=00000001 ret=7d77632a
0028:Call oleaut32.SysStringByteLen(001a4c84) ret=7d77b2f1
0028:Ret  oleaut32.SysStringByteLen() retval=0000f402 ret=7d77b2f1
0028:Call ntdll.RtlAllocateHeap(00110000,00000000,0000004c) ret=7d7759c5
0028:Ret  ntdll.RtlAllocateHeap() retval=001b41b8 ret=7d7759c5
0028:trace:msxml:saxxmlreader_AddRef 0x15a098
0028:Call oleaut32.SysAllocString(7d7a3300 L"http://www.w3.org/2000/xmlns/")
ret=7d77a640
0028:Call ntdll.RtlAllocateHeap(00110000,00000000,00000040) ret=7e92b022
0028:Ret  ntdll.RtlAllocateHeap() retval=001b4210 ret=7e92b022
0028:Ret  oleaut32.SysAllocString() retval=001b4214 ret=7d77a640
0028:Call ntdll.RtlAllocateHeap(00110000,00000000,00000080) ret=7d7759c5
0028:Ret  ntdll.RtlAllocateHeap() retval=001b4258 ret=7d7759c5
0028:trace:msxml:SAXLocator_create returning 0x1b41b8
0028:trace:msxml:internal_parseBuffer detected encoding: (null)
0028:trace:msxml:isaxlocator_AddRef (0x1b41b8)->(2)
0028:Call KERNEL32.MultiByteToWideChar(0000fdf2,00000000,0032dfd0 "Char 0x0 out
of allowed range\n",ffffffff,00000000,00000000) ret=7d7792f4
0028:Ret  KERNEL32.MultiByteToWideChar() retval=0000001f ret=7d7792f4
0028:Call ntdll.RtlAllocateHeap(00110000,00000000,0000003e) ret=7d7759c5
0028:Ret  ntdll.RtlAllocateHeap() retval=001b42e0 ret=7d7759c5
0028:Call KERNEL32.MultiByteToWideChar(0000fdf2,00000000,0032dfd0 "Char 0x0 out
of allowed range\n",ffffffff,001b42e0,0000001f) ret=7d779348
0028:Ret  KERNEL32.MultiByteToWideChar() retval=0000001f ret=7d779348
0028:trace:msxml:libxmlFatalError fatal error for 0x1b41b8: L"Char 0x0 out of
allowed range\n"
0028:fixme:msxml:libxmlFatalError Error handling is not compatible. 
...
--- snip --- 

The data is passed as BSTR/UTF-16.

Debugging session:

--- snip ---
Wine-dbg>bt
Backtrace:
=>0 0x7d723880 internal_parseBuffer+0x101(This=0x139278, buffer="<",
size=0xf402, vbInterface=0)
[/home/focht/projects/wine/wine-git/dlls/msxml3/saxreader.c:2162] in msxml3
(0x0033e7c4)
  1 0x7d724313 internal_parse+0xfa(This=0x139278, varInput={n1={n2={vt=0x8,
wReserved1=0x11, wReserved2=0xd338, wReserved3=0x15, n3={cVal=-116,
uiVal=0x398c, ulVal=0x18398c, intVal=0x18398c, uintVal=0x18398c, bVal=-116,
iVal=0x398c, lVal=0x18398c,
...
bstrVal="<categoryPublicationManifest
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.microsoft.com/2008/09/sip/categoryPublicationManifest"
  minSupportedClientVersion="2.0.0.0">
  <publicationList>
    <publicationRule ruleType="transformation" categoryName="state"
containerId="2" preferredSelfConsumption="true" />
    <publicationRule ruleType="transformation" categoryName="state"
containerId="3">
      <categoryData>
        <![CDATA[
...
  2 0x7d7261c2 isaxxmlreader_parse+0x5a(iface=0x13928c,
varInput={n1={n2={vt=0x8, wReserved1=0x11, wReserved2=0xd338, wReserved3=0x15,
n3={cVal=-116, uiVal=0x398c, ulVal=0x18398c, intVal=0x18398c, uintVal=0x18398c,
bVal=-116, iVal=0x398c, lVal=0x18398c,
...
bstrVal="<categoryPublicationManifest
...
gn=0}, signscale=0x11}, Hi32=0x15d338, ={={Lo32=0x18398c, Mid32=0x7bcbf544},
Lo64=0x7bcbf5440018398c}}}})
[/home/focht/projects/wine/wine-git/dlls/msxml3/saxreader.c:3194] in msxml3
(0x0033e894)
  3 0x21fbe64e in ocapi (+0x33e64d) (0x0033f978)
  4 0x21fbf5d6 in ocapi (+0x33f5d5) (0x0033f9a0)
  5 0x221ab486 in ocapi (+0x52b485) (0x0033faac)
  6 0x221abdce in ocapi (+0x52bdcd) (0x0033faf0)
  7 0x221a7992 in ocapi (+0x527991) (0x0033fb44)
  8 0x21ecb949 in ocapi (+0x24b948) (0x0033fb94)
  9 0x21ecd5f2 in ocapi (+0x24d5f1) (0x0033fbe8)
  10 0x21ecddba in ocapi (+0x24ddb9) (0x0033fc20)
  11 0x21ea490d in ocapi (+0x22490c) (0x0033fc8c)
  12 0x004213a2 in communicator (+0x213a1) (0x0033fcbc) 
--- snip ---

Code:
http://source.winehq.org/git/wine.git/blob/4fb5872bd233c924cadbf3a4011dcd622765e047:/dlls/msxml3/saxreader.c#l2139

--- snip ---
2139 static HRESULT internal_parseBuffer(saxreader *This, const char *buffer,
int size, BOOL vbInterface)
2140 {
2141     xmlCharEncoding encoding = XML_CHAR_ENCODING_NONE;
2142     xmlChar *enc_name = NULL;
2143     saxlocator *locator;
2144     HRESULT hr;
2145 
2146     hr = SAXLocator_create(This, &locator, vbInterface);
2147     if(FAILED(hr))
2148         return hr;
2149 
2150     if (size >= 4)
2151     {
2152         const unsigned char *buff = (unsigned char*)buffer;
2153 
2154         encoding = xmlDetectCharEncoding((xmlChar*)buffer, 4);
2155         enc_name = (xmlChar*)xmlGetCharEncodingName(encoding);
2156         TRACE("detected encoding: %s\n", enc_name);
2157         /* skip BOM, parser won't switch encodings and so won't skip it on
its own */
2158         if ((encoding == XML_CHAR_ENCODING_UTF8) &&
2159             buff[0] == 0xEF && buff[1] == 0xBB && buff[2] == 0xBF)
2160         {
2161             buffer += 3;
2162             size -= 3;
2163         }
2164     }
2165 
2166     locator->pParserCtxt = xmlCreateMemoryParserCtxt(buffer, size);
2167     if(!locator->pParserCtxt)
2168     {
2169         ISAXLocator_Release(&locator->ISAXLocator_iface);
2170         return E_FAIL;
2171     }
2172 
2173     if (encoding == XML_CHAR_ENCODING_UTF8)
2174         locator->pParserCtxt->encoding = xmlStrdup(enc_name);
2175 
2176     xmlFree(locator->pParserCtxt->sax);
2177     locator->pParserCtxt->sax = &locator->saxreader->sax;
2178     locator->pParserCtxt->userData = locator;
2179 
2180     This->isParsing = TRUE;
2181     if(xmlParseDocument(locator->pParserCtxt)==-1 && locator->ret==S_OK)
2182         hr = E_FAIL;
2183     else
2184         hr = locator->ret;
2185     This->isParsing = FALSE;
2186 
2187     if(locator->pParserCtxt)
2188     {
2189         locator->pParserCtxt->sax = NULL;
2190         xmlFreeParserCtxt(locator->pParserCtxt);
2191         locator->pParserCtxt = NULL;
2192     }
2193 
2194     ISAXLocator_Release(&locator->ISAXLocator_iface);
2195     return hr;
2196 }
--- snip ---

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list