From 90e29cbcdc6661b7191da9b4079428847da617b6 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Tue, 18 Nov 2014 17:17:31 -0800 Subject: Fixed crash on NULL de-referencing. BUG=433992 R=bo_xu@foxitsoftware.com Review URL: https://codereview.chromium.org/733273002 --- core/src/fpdftext/fpdf_text_int.cpp | 50 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp index 5b174f0187..42bbffa52e 100644 --- a/core/src/fpdftext/fpdf_text_int.cpp +++ b/core/src/fpdftext/fpdf_text_int.cpp @@ -1499,7 +1499,7 @@ void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) CPDF_ContentMarkItem& item = pMarkData->GetItem(n); CFX_ByteString tagStr = (CFX_ByteString)item.GetName(); pDict = (CPDF_Dictionary*)item.GetParam(); - CPDF_String* temp = (CPDF_String*)pDict->GetElement(FX_BSTRC("ActualText")); + CPDF_String* temp = (CPDF_String*)(pDict ? pDict->GetElement(FX_BSTRC("ActualText")) : NULL); if (temp) { actText = temp->GetUnicodeText(); } @@ -1875,30 +1875,30 @@ void CPDF_TextPage::ProcessTextObject(PDFTEXT_Obj Obj) } } } - if (bIsBidiAndMirrosInverse) { - FX_INT32 i, j; - i = iCharListStartAppend; - j = m_TempCharList.GetSize() - 1; - PAGECHAR_INFO tempCharInfo; - FX_INT32 tempIndex = 0; - for (; i < j; i++, j--) { - tempCharInfo = m_TempCharList[i]; - m_TempCharList[i] = m_TempCharList[j]; - m_TempCharList[j] = tempCharInfo; - tempIndex = m_TempCharList[i].m_Index; - m_TempCharList[i].m_Index = m_TempCharList[j].m_Index; - m_TempCharList[j].m_Index = tempIndex; - } - FX_WCHAR * pTempBuffer = m_TempTextBuf.GetBuffer(); - i = iBufStartAppend; - j = m_TempTextBuf.GetLength() - 1; - FX_WCHAR wTemp; - for (; i < j; i++, j--) { - wTemp = pTempBuffer[i]; - pTempBuffer[i] = pTempBuffer[j]; - pTempBuffer[j] = wTemp; - } - } + if (bIsBidiAndMirrosInverse) { + FX_INT32 i, j; + i = iCharListStartAppend; + j = m_TempCharList.GetSize() - 1; + PAGECHAR_INFO tempCharInfo; + FX_INT32 tempIndex = 0; + for (; i < j; i++, j--) { + tempCharInfo = m_TempCharList[i]; + m_TempCharList[i] = m_TempCharList[j]; + m_TempCharList[j] = tempCharInfo; + tempIndex = m_TempCharList[i].m_Index; + m_TempCharList[i].m_Index = m_TempCharList[j].m_Index; + m_TempCharList[j].m_Index = tempIndex; + } + FX_WCHAR * pTempBuffer = m_TempTextBuf.GetBuffer(); + i = iBufStartAppend; + j = m_TempTextBuf.GetLength() - 1; + FX_WCHAR wTemp; + for (; i < j; i++, j--) { + wTemp = pTempBuffer[i]; + pTempBuffer[i] = pTempBuffer[j]; + pTempBuffer[j] = wTemp; + } + } } FX_INT32 CPDF_TextPage::GetTextObjectWritingMode(const CPDF_TextObject* pTextObj) { -- cgit v1.2.3