[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-filesystem-cvs
Subject:    [Filesystem-cvs] httplite httpfileobj.cpp,1.7.2.4,1.7.2.5
From:       acolwell () helixcommunity ! org
Date:       2004-03-24 21:30:08
[Download RAW message or body]

Update of /cvsroot/filesystem/httplite
In directory cvs.internal.helixcommunity.org:/tmp/cvs-serv32364

Modified Files:
      Tag: hxclient_1_3_0_neptunex
	httpfileobj.cpp 
Log Message:
Fix crash caused by using m_pFileResponse when it was NULL. Added NULL pointer
checks for all uses of m_pFileResponse


Index: httpfileobj.cpp
===================================================================
RCS file: /cvsroot/filesystem/httplite/httpfileobj.cpp,v
retrieving revision 1.7.2.4
retrieving revision 1.7.2.5
diff -u -d -r1.7.2.4 -r1.7.2.5
--- httpfileobj.cpp	19 Mar 2004 08:21:15 -0000	1.7.2.4
+++ httpfileobj.cpp	24 Mar 2004 21:30:06 -0000	1.7.2.5
@@ -500,7 +500,10 @@
             m_lNewReadOffset = -1;
 
             m_bInSeekDone = TRUE;
-            m_pFileResponse->SeekDone(HXR_OK);
+            if (m_pFileResponse)
+            {
+                m_pFileResponse->SeekDone(HXR_OK);
+            }
             m_bInSeekDone = FALSE;
         }
     }
@@ -915,7 +918,10 @@
             (m_bDisconnected == TRUE)  && (m_pCache->IsEmpty())
         )
     {
-        m_pFileResponse->ReadDone(HXR_SERVER_DISCONNECTED, NULL);
+        if (m_pFileResponse)
+        {
+            m_pFileResponse->ReadDone(HXR_SERVER_DISCONNECTED, NULL);
+        }
 
         return HXR_OK;
     }
@@ -951,7 +957,11 @@
             // being modified in some method called from ReadDone().
             IHXBuffer* pBuff = m_pPendingReadInfo.pPendingReadBuff;
             m_pPendingReadInfo.pPendingReadBuff = NULL;
-            m_pFileResponse->ReadDone(HXR_OK, pBuff);
+            
+            if (m_pFileResponse)
+            {
+                m_pFileResponse->ReadDone(HXR_OK, pBuff);
+            }
             HX_RELEASE(pBuff);
             pBuff = NULL;
 
@@ -973,7 +983,11 @@
         {
             m_ulCurrentReadOffset = m_pPendingReadInfo.ulReadOffset + m_pPendingReadInfo.ulSize;
             m_bReadPending = FALSE;
-            m_pFileResponse->ReadDone(HXR_OK, pBuffer);
+
+            if (m_pFileResponse)
+            {
+                m_pFileResponse->ReadDone(HXR_OK, pBuffer);
+            }
         }
 
         // This means that the Cache has only partial data. Create a buffer to store this partial data.
@@ -1027,7 +1041,11 @@
             {
                 m_bReadPending = FALSE;
                 m_ulCurrentReadOffset = m_pPendingReadInfo.ulReadOffset;
-                m_pFileResponse->ReadDone(HXR_INCOMPLETE, pBuffer);
+
+                if (m_pFileResponse)
+                {
+                    m_pFileResponse->ReadDone(HXR_INCOMPLETE, pBuffer);
+                }
             }
             else
             {
@@ -1146,7 +1164,7 @@
 
     if(status != HXR_OK)
     {
-        if(!m_bInitialized)
+        if(!m_bInitialized && m_pFileResponse)
         {
            m_pFileResponse->InitDone(status);
         }
@@ -1163,7 +1181,7 @@
     res = _PrepareHTTP10GetMessage(HttpGetReq, ulReqLen);
     if(res != HXR_OK)
     {
-        if(!m_bInitialized)
+        if(!m_bInitialized && m_pFileResponse)
         {
             m_pFileResponse->InitDone(HXR_OUTOFMEMORY);
         }
@@ -1174,7 +1192,7 @@
     CHXBuffer* pSendBuffer = new CHXBuffer((UCHAR*)HttpGetReq, ulReqLen);
     if(pSendBuffer == NULL)
     {
-        if(!m_bInitialized)
+        if(!m_bInitialized && m_pFileResponse)
         {
             m_pFileResponse->InitDone(HXR_OUTOFMEMORY);
         }
@@ -1225,7 +1243,7 @@
     {
         if( (status != HXR_OK) || (pBuffer == NULL) )
         {
-            if(!m_bInitialized)
+            if(!m_bInitialized && m_pFileResponse)
             {
                 m_pFileResponse->InitDone(HXR_FAIL);
             }
@@ -1248,7 +1266,10 @@
                     m_bFirstChunk = TRUE;
 
                     // The requested file is not present on the web server
-                    m_pFileResponse->InitDone(HXR_DOC_MISSING);
+                    if (m_pFileResponse)
+                    {
+                        m_pFileResponse->InitDone(HXR_DOC_MISSING);
+                    }
                 }
 
                 return HXR_OK;
@@ -1316,7 +1337,7 @@
 
         if( (hdr == NULL) || (data == NULL) )
         {
-            if(!m_bInitialized)
+            if(!m_bInitialized && m_pFileResponse)
             {
                 m_pFileResponse->InitDone(HXR_OUTOFMEMORY);
             }
@@ -1350,7 +1371,7 @@
             delete hdr;
             delete data;
 
-            if(!m_bInitialized)
+            if(!m_bInitialized && m_pFileResponse)
             {
                 m_pFileResponse->InitDone(HXR_OUTOFMEMORY);
             }
@@ -1380,7 +1401,7 @@
             m_pHeader = NULL;
             HX_RELEASE(dataBuff);
 
-            if(!m_bInitialized)
+            if(!m_bInitialized && m_pFileResponse)
             {
                 m_pFileResponse->InitDone(HXR_INVALID_FILE);
             }
@@ -1398,7 +1419,7 @@
             m_pHeader = NULL;
             HX_RELEASE(dataBuff);
 
-            if(!m_bInitialized)
+            if(!m_bInitialized && m_pFileResponse)
             {
                 m_pFileResponse->InitDone(HXR_INVALID_FILE);
             }
@@ -1525,7 +1546,7 @@
 {
     MLOG_HTTP("CHXHTTPFileObject::Func()\n");
 
-    if(m_bInitResponsePending)
+    if(m_bInitResponsePending && m_pFileResponse)
     {
         m_bInitResponsePending = FALSE;
         m_bInitialized = TRUE;
@@ -1545,7 +1566,11 @@
             m_bIncompleteReadPending = FALSE;
             IHXBuffer* pBuff = m_pPendingReadInfo.pPendingReadBuff;
             m_pPendingReadInfo.pPendingReadBuff = NULL;
-            m_pFileResponse->ReadDone(HXR_INCOMPLETE, pBuff);
+
+            if (m_pFileResponse)
+            {
+                m_pFileResponse->ReadDone(HXR_INCOMPLETE, pBuff);
+            }
             HX_RELEASE(pBuff);
             pBuff = NULL;
         }



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic