From a478dc5ca23b6f2f609b119cdc6b0336d1471d8c Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Mon, 23 Jan 2017 15:48:51 -0500 Subject: Fix CPDF_InterForm::CheckRequiredFields and its callers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The method is used twice in fpdfsdk/cpdfsdk_interform.cpp and twice in fpdfsdk/javascript/Document.cpp, but not in a compatible way. Changed the method so that it now returns true when checks pass, which is the more natural thing to do, considering the name of the method. BUG=pdfium:659 Change-Id: Iacf3049f328df1d4db3fbfc995acf184230ebf48 Reviewed-on: https://pdfium-review.googlesource.com/2297 Commit-Queue: Nicolás Peña Reviewed-by: Tom Sepez --- core/fpdfdoc/cpdf_interform.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'core/fpdfdoc/cpdf_interform.cpp') diff --git a/core/fpdfdoc/cpdf_interform.cpp b/core/fpdfdoc/cpdf_interform.cpp index 6cffea6222..127e542227 100644 --- a/core/fpdfdoc/cpdf_interform.cpp +++ b/core/fpdfdoc/cpdf_interform.cpp @@ -1157,7 +1157,7 @@ CPDF_FormControl* CPDF_InterForm::AddControl(CPDF_FormField* pField, return pControl; } -CPDF_FormField* CPDF_InterForm::CheckRequiredFields( +bool CPDF_InterForm::CheckRequiredFields( const std::vector* fields, bool bIncludeOrExclude) const { size_t nCount = m_pFieldTree->m_Root.CountFields(); @@ -1173,7 +1173,7 @@ CPDF_FormField* CPDF_InterForm::CheckRequiredFields( } uint32_t dwFlags = pField->GetFieldFlags(); // TODO(thestig): Look up these magic numbers and add constants for them. - if (dwFlags & 0x04) + if (dwFlags & FORMFLAG_NOEXPORT) continue; bool bFind = true; @@ -1181,11 +1181,13 @@ CPDF_FormField* CPDF_InterForm::CheckRequiredFields( bFind = pdfium::ContainsValue(*fields, pField); if (bIncludeOrExclude == bFind) { CPDF_Dictionary* pFieldDict = pField->m_pDict; - if ((dwFlags & 0x02) != 0 && pFieldDict->GetStringFor("V").IsEmpty()) - return pField; + if ((dwFlags & FORMFLAG_REQUIRED) != 0 && + pFieldDict->GetStringFor("V").IsEmpty()) { + return false; + } } } - return nullptr; + return true; } std::unique_ptr CPDF_InterForm::ExportToFDF( -- cgit v1.2.3