summaryrefslogtreecommitdiff
path: root/core/fpdfapi/edit
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2017-08-01 11:08:33 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-08-01 21:32:01 +0000
commit1c5d8504ed38dbf19ae4dee04360cf0893cdb18f (patch)
treeba6378465e4f0659b023e8e2674fb2ba447e0d45 /core/fpdfapi/edit
parent04f736099c065d83193d2ceeccd6d125d7fe789d (diff)
downloadpdfium-1c5d8504ed38dbf19ae4dee04360cf0893cdb18f.tar.xz
Change CPDF_Parser::GetIndirectBinary() to return a std::vector.
Fixes potential leaks in CPDF_Creator::WriteOldIndirectObject(), the only caller. Change-Id: I8a20da8a555c8d28f3bcd467a193a6a81c9f91d9 Reviewed-on: https://pdfium-review.googlesource.com/9751 Reviewed-by: Art Snake <art-snake@yandex-team.ru> Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core/fpdfapi/edit')
-rw-r--r--core/fpdfapi/edit/cpdf_creator.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp
index ceffa5077f..b347d45dce 100644
--- a/core/fpdfapi/edit/cpdf_creator.cpp
+++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -336,23 +336,20 @@ bool CPDF_Creator::WriteOldIndirectObject(uint32_t objnum) {
if (!bExistInMap)
m_pDocument->DeleteIndirectObject(objnum);
} else {
- uint8_t* pBuffer;
- uint32_t size;
- m_pParser->GetIndirectBinary(objnum, pBuffer, size);
- if (!pBuffer)
+ std::vector<uint8_t> buffer = m_pParser->GetIndirectBinary(objnum);
+ if (buffer.empty())
return true;
if (object_type == CPDF_Parser::ObjectType::kCompressed) {
if (!m_Archive->WriteDWord(objnum) ||
!m_Archive->WriteString(" 0 obj ") ||
- !m_Archive->WriteBlock(pBuffer, size) ||
+ !m_Archive->WriteBlock(buffer.data(), buffer.size()) ||
!m_Archive->WriteString("\r\nendobj\r\n")) {
return false;
}
} else {
- if (!m_Archive->WriteBlock(pBuffer, size))
+ if (!m_Archive->WriteBlock(buffer.data(), buffer.size()))
return false;
}
- FX_Free(pBuffer);
}
return true;
}