FIX: Exception in DrawCli When Displaying Summary Information

ID: Q153963


The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, versions 4.0, 4.1, 4.2


SYMPTOMS

When displaying the Summary Info for an existing DrawCli file with Summary Info saved, DrawCli may crash with the following error:

Unhandled Exception : Access Violation
DrawCli is an MFC OLE sample that is shipped with Visual C++.


CAUSE

CSummInfo::ReadFromStorage does not set CSummInfo::m_pSection. This behavior leaves a dangling pointer into memory that has been deleted.


RESOLUTION

Modify the ReadFromStorage as follows:


   BOOL CSummInfo::ReadFromStorage( LPSTORAGE lpRootStg )
   {
       if (lpRootStg != NULL)
       {
           LPSTREAM lpStream = NULL;

           if (FAILED(lpRootStg->OpenStream( szSummInfo,
                      NULL, STGM_SHARE_EXCLUSIVE|STGM_READ,
                      0, &lpStream )))
           {
               TRACE(_T("OpenStream failed\n"));
               return FALSE;
           }
           else
           {
               if (!m_propSet.ReadFromStream( lpStream ))
               {
                   TRACE(_T("ReadFromStream failed\n"));
                   return FALSE;
               }
   // add the following line
               m_pSection = m_propSet.GetSection(FMTID_SummaryInformation);

               lpStream->Release();
               return TRUE;
           }
       }
       return FALSE;
   } 


STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 4.2.

Additional query words: kbVC400bug 4.00 4.10 4.20 mfcole vcfixlist420 kbole CodeSam

Keywords : CodeSam
Version : winnt:4.0,4.1,4.2
Platform : winnt
Issue type :


Last Reviewed: January 31, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.