diff options
author | Lei Zhang <thestig@chromium.org> | 2017-08-01 11:08:33 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-08-01 21:32:01 +0000 |
commit | 1c5d8504ed38dbf19ae4dee04360cf0893cdb18f (patch) | |
tree | ba6378465e4f0659b023e8e2674fb2ba447e0d45 /core/fpdfapi/edit | |
parent | 04f736099c065d83193d2ceeccd6d125d7fe789d (diff) | |
download | pdfium-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.cpp | 11 |
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; } |