diff options
author | Lei Zhang <thestig@chromium.org> | 2018-04-12 20:58:56 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-04-12 20:58:56 +0000 |
commit | 2772a2d944c8573aa187339b0b5ea059d1293c36 (patch) | |
tree | 6093cb350e78c64ce32fe2c7a433258f70c1ad58 /core/fpdfapi/page/cpdf_color.cpp | |
parent | 9e625db795ca7e112d692bda7200b69a873d75f7 (diff) | |
download | pdfium-2772a2d944c8573aa187339b0b5ea059d1293c36.tar.xz |
More CPDF_Color improvements.
Make Copy() take a const-ref parameter. As is, the parameter is a
pointer and it is dereferenced without any checks, and there are no
crash reports as a result of that.
Also mention GetPattern() should only be called when IsPattern() returns
true.
Change-Id: Ice3b7c941532d5a312fdd8f0c032e08d1ee1c6b5
Reviewed-on: https://pdfium-review.googlesource.com/30430
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core/fpdfapi/page/cpdf_color.cpp')
-rw-r--r-- | core/fpdfapi/page/cpdf_color.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/core/fpdfapi/page/cpdf_color.cpp b/core/fpdfapi/page/cpdf_color.cpp index 73e3d36ec4..080df2fa28 100644 --- a/core/fpdfapi/page/cpdf_color.cpp +++ b/core/fpdfapi/page/cpdf_color.cpp @@ -119,10 +119,10 @@ void CPDF_Color::SetValue(CPDF_Pattern* pPattern, } } -void CPDF_Color::Copy(const CPDF_Color* pSrc) { +void CPDF_Color::Copy(const CPDF_Color& src) { ReleaseBuffer(); ReleaseColorSpace(); - m_pCS = pSrc->m_pCS; + m_pCS = src.m_pCS; if (!m_pCS) return; @@ -134,7 +134,7 @@ void CPDF_Color::Copy(const CPDF_Color* pSrc) { return; } m_pBuffer = m_pCS->CreateBuf(); - memcpy(m_pBuffer, pSrc->m_pBuffer, m_pCS->GetBufSize()); + memcpy(m_pBuffer, src.m_pBuffer, m_pCS->GetBufSize()); if (!IsPatternInternal()) return; @@ -164,7 +164,9 @@ bool CPDF_Color::GetRGB(int* R, int* G, int* B) const { } CPDF_Pattern* CPDF_Color::GetPattern() const { - if (!m_pBuffer || !IsPatternInternal()) + ASSERT(IsPattern()); + + if (!m_pBuffer) return nullptr; PatternValue* pvalue = reinterpret_cast<PatternValue*>(m_pBuffer); |