Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(488)

Issue 1585533002: Fix infinite loops caused by calling circular indirect objects (Closed)

Created:
4 years, 11 months ago by Wei Li
Modified:
4 years, 11 months ago
CC:
pdfium-reviews_googlegroups.com, kai_jing
Base URL:
https://pdfium.googlesource.com/pdfium.git@master
Target Ref:
refs/heads/master
Visibility:
Public.

Description

Fix infinite loops caused by calling circular indirect objects There are multiple functions in CPDF_Object class which can cause infinite loop due to recursively calling circular indirect objects. Fix them by deference indirect object first. BUG=pdfium:355 R=jun_fang@foxitsoftware.com, thestig@chromium.org Committed: https://pdfium.googlesource.com/pdfium/+/90853cb1dfd1bf3803ec21cfae3e93948137be61

Patch Set 1 #

Total comments: 4

Patch Set 2 : address comments #

Total comments: 8

Patch Set 3 : fix nits and rebase #

Total comments: 2

Patch Set 4 : address comments and rebase #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+79 lines, -111 lines) Patch
M core/include/fpdfapi/fpdf_objects.h View 1 2 6 chunks +9 lines, -26 lines 1 comment Download
M core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp View 1 2 3 3 chunks +50 lines, -85 lines 0 comments Download
M fpdfsdk/src/fpdfview_embeddertest.cpp View 1 2 3 1 chunk +5 lines, -0 lines 0 comments Download
A testing/resources/bug_355.pdf View 1 2 3 1 chunk +15 lines, -0 lines 0 comments Download

Messages

Total messages: 20 (4 generated)
Wei Li
PTAL. thanks
4 years, 11 months ago (2016-01-13 02:03:49 UTC) #2
Lei Zhang
Are references to references legal? If no, then this is fine. Otherwise, a reference to ...
4 years, 11 months ago (2016-01-13 02:33:16 UTC) #3
Wei Li
https://codereview.chromium.org/1585533002/diff/1/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp File core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp (right): https://codereview.chromium.org/1585533002/diff/1/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp#newcode56 core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp:56: } else On 2016/01/13 02:33:16, Lei Zhang wrote: > ...
4 years, 11 months ago (2016-01-13 06:18:43 UTC) #4
Wei Li
+Jun as reviewer Could an indirect object refer to another indirect object? I read the ...
4 years, 11 months ago (2016-01-13 06:28:54 UTC) #6
jun_fang
On 2016/01/13 06:28:54, Wei Li wrote: > +Jun as reviewer > > Could an indirect ...
4 years, 11 months ago (2016-01-13 16:15:18 UTC) #7
jun_fang
On 2016/01/13 16:15:18, jun_fang wrote: > On 2016/01/13 06:28:54, Wei Li wrote: > > +Jun ...
4 years, 11 months ago (2016-01-14 14:58:22 UTC) #8
jun_fang
https://codereview.chromium.org/1585533002/diff/20001/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp File core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp (right): https://codereview.chromium.org/1585533002/diff/20001/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp#newcode50 core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp:50: if (m_Type == PDFOBJ_REFERENCE) { nit: prefer like if ...
4 years, 11 months ago (2016-01-14 14:58:40 UTC) #9
Wei Li
Jun, thanks for the review. I assume you meant "An indirect reference can only be ...
4 years, 11 months ago (2016-01-14 19:07:22 UTC) #10
jun_fang
On 2016/01/14 19:07:22, Wei Li wrote: > Jun, thanks for the review. I assume you ...
4 years, 11 months ago (2016-01-15 00:37:32 UTC) #11
Wei Li
> Below is the definition of 'indirect object': > > an object that is labeled ...
4 years, 11 months ago (2016-01-15 01:17:08 UTC) #12
jun_fang
On 2016/01/15 01:17:08, Wei Li wrote: > > Below is the definition of 'indirect object': ...
4 years, 11 months ago (2016-01-15 03:04:17 UTC) #13
Lei Zhang
lgtm https://codereview.chromium.org/1585533002/diff/40001/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp File core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp (right): https://codereview.chromium.org/1585533002/diff/40001/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp#newcode50 core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp:50: if (m_Type != PDFOBJ_REFERENCE) You can just call ...
4 years, 11 months ago (2016-01-16 00:51:57 UTC) #14
Wei Li
Thanks, will submit https://codereview.chromium.org/1585533002/diff/40001/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp File core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp (right): https://codereview.chromium.org/1585533002/diff/40001/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp#newcode50 core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp:50: if (m_Type != PDFOBJ_REFERENCE) On 2016/01/16 ...
4 years, 11 months ago (2016-01-19 20:16:25 UTC) #15
Wei Li
Committed patchset #4 (id:60001) manually as 90853cb1dfd1bf3803ec21cfae3e93948137be61 (presubmit successful).
4 years, 11 months ago (2016-01-19 20:16:58 UTC) #17
Oliver Chang
https://codereview.chromium.org/1585533002/diff/60001/core/include/fpdfapi/fpdf_objects.h File core/include/fpdfapi/fpdf_objects.h (right): https://codereview.chromium.org/1585533002/diff/60001/core/include/fpdfapi/fpdf_objects.h#newcode105 core/include/fpdfapi/fpdf_objects.h:105: const CPDF_Object* const GetBasicObject() const; this extra const prevented ...
4 years, 11 months ago (2016-01-19 23:09:35 UTC) #19
Lei Zhang
4 years, 11 months ago (2016-01-25 21:49:38 UTC) #20
Message was sent while issue was closed.
On 2016/01/19 23:09:35, Oliver Chang wrote:
>
https://codereview.chromium.org/1585533002/diff/60001/core/include/fpdfapi/fp...
> File core/include/fpdfapi/fpdf_objects.h (right):
> 
>
https://codereview.chromium.org/1585533002/diff/60001/core/include/fpdfapi/fp...
> core/include/fpdfapi/fpdf_objects.h:105: const CPDF_Object* const
> GetBasicObject() const;
> this extra const prevented a roll :(
> 
> ../../third_party/pdfium/core/include/fpdfapi/fpdf_objects.h:105:22: error:
> 'const' type qualifier on return type has no effect
> [-Werror,-Wignored-qualifiers]
>   const CPDF_Object* const GetBasicObject() const;
> 
> Not sure why we didn't catch this on our bots.

Because we don't have Werror turned on. Some day...

Powered by Google App Engine
This is Rietveld 408576698