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

Issue 2375343004: Assert that only 0-numbered objects are Released() (Closed)

Created:
4 years, 2 months ago by Tom Sepez
Modified:
4 years, 2 months ago
Reviewers:
Lei Zhang
CC:
pdfium-reviews_googlegroups.com
Target Ref:
refs/heads/master
Project:
pdfium
Visibility:
Public.

Description

Assert that only 0-numbered objects are Released() This condition holds because numbered objects are brute-force deleted by the indirect object holder, rather than being released. Be careful about recursive deletion, check before advancing, since we no longer count on Release() doing this for us. Fix a few tests where the test was violating ownership rules. This should be the last step before completely removing Release() in favor of direct delete everywhere. Committed: https://pdfium.googlesource.com/pdfium/+/aba528a362248a54b27a7e9e046e2b65ab83f624

Patch Set 1 #

Patch Set 2 : brute-force delete unowned numbered object in one place #

Total comments: 13

Patch Set 3 : make block whole again. #

Patch Set 4 : Test stream/dictionary loop #

Patch Set 5 : Add test for stream loop #

Patch Set 6 : Add unowned ptr to stream #

Total comments: 2

Patch Set 7 : typo #

Unified diffs Side-by-side diffs Delta from patch set Stats (+47 lines, -36 lines) Patch
M core/fpdfapi/fpdf_parser/cpdf_array.cpp View 1 chunk +1 line, -1 line 0 comments Download
M core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp View 1 2 1 chunk +1 line, -1 line 0 comments Download
M core/fpdfapi/fpdf_parser/cpdf_object.cpp View 1 chunk +1 line, -3 lines 0 comments Download
M core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp View 1 2 3 4 5 6 6 chunks +25 lines, -7 lines 0 comments Download
M core/fpdfapi/fpdf_parser/cpdf_parser.cpp View 1 2 3 4 5 4 chunks +14 lines, -23 lines 0 comments Download
M core/fpdfapi/fpdf_parser/cpdf_stream.cpp View 1 2 1 chunk +5 lines, -1 line 0 comments Download

Messages

Total messages: 49 (27 generated)
Tom Sepez
Lei, for review.
4 years, 2 months ago (2016-09-29 23:47:34 UTC) #5
Lei Zhang
Are you thinking |kInvalidObjNum| == 0? |kInvalidObjNum| is actually 0xFFFFFFFF.
4 years, 2 months ago (2016-09-30 01:08:48 UTC) #12
Tom Sepez
On 2016/09/30 01:08:48, Lei Zhang wrote: > Are you thinking |kInvalidObjNum| == 0? |kInvalidObjNum| is ...
4 years, 2 months ago (2016-09-30 01:37:21 UTC) #13
Tom Sepez
Can I help explain anything?
4 years, 2 months ago (2016-09-30 21:32:18 UTC) #16
Lei Zhang
https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp File core/fpdfapi/fpdf_parser/cpdf_object.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp#newcode41 core/fpdfapi/fpdf_parser/cpdf_object.cpp:41: CHECK(!m_ObjNum); So should we also CHECK(m_ObjNum != kInvalidObjNum); ?
4 years, 2 months ago (2016-09-30 21:44:52 UTC) #17
Tom Sepez
https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp File core/fpdfapi/fpdf_parser/cpdf_object.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp#newcode41 core/fpdfapi/fpdf_parser/cpdf_object.cpp:41: CHECK(!m_ObjNum); On 2016/09/30 21:44:52, Lei Zhang wrote: > So ...
4 years, 2 months ago (2016-09-30 22:21:37 UTC) #18
Lei Zhang
https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp File core/fpdfapi/fpdf_parser/cpdf_object.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp#newcode41 core/fpdfapi/fpdf_parser/cpdf_object.cpp:41: CHECK(!m_ObjNum); On 2016/09/30 22:21:37, Tom Sepez wrote: > On ...
4 years, 2 months ago (2016-09-30 22:36:05 UTC) #19
Tom Sepez
On 2016/09/30 22:36:05, Lei Zhang wrote: > https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp > File core/fpdfapi/fpdf_parser/cpdf_object.cpp (right): > > https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_object.cpp#newcode41 ...
4 years, 2 months ago (2016-09-30 22:51:33 UTC) #20
Lei Zhang
On 2016/09/30 22:51:33, Tom Sepez wrote: > Am I losing my mind? Nah. It's obviously ...
4 years, 2 months ago (2016-09-30 22:59:50 UTC) #21
Lei Zhang
https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp File core/fpdfapi/fpdf_parser/cpdf_parser.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp#newcode970 core/fpdfapi/fpdf_parser/cpdf_parser.cpp:970: CPDF_Stream* pStream = pObject->AsStream(); Do you know if |pObject| ...
4 years, 2 months ago (2016-09-30 23:49:01 UTC) #22
Tom Sepez
https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp File core/fpdfapi/fpdf_parser/cpdf_parser.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp#newcode970 core/fpdfapi/fpdf_parser/cpdf_parser.cpp:970: CPDF_Stream* pStream = pObject->AsStream(); On 2016/09/30 23:49:01, Lei Zhang ...
4 years, 2 months ago (2016-10-01 00:13:11 UTC) #23
Lei Zhang
https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_stream.cpp File core/fpdfapi/fpdf_parser/cpdf_stream.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_stream.cpp#newcode25 core/fpdfapi/fpdf_parser/cpdf_stream.cpp:25: m_pDict.release(); // lowercase release, release ownership. On 2016/10/01 00:13:11, ...
4 years, 2 months ago (2016-10-01 00:34:15 UTC) #28
Tom Sepez
On 2016/10/01 00:34:15, Lei Zhang wrote: > https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_stream.cpp > File core/fpdfapi/fpdf_parser/cpdf_stream.cpp (right): > > https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_stream.cpp#newcode25 ...
4 years, 2 months ago (2016-10-01 00:53:30 UTC) #29
Lei Zhang
https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp File core/fpdfapi/fpdf_parser/cpdf_parser.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp#newcode977 core/fpdfapi/fpdf_parser/cpdf_parser.cpp:977: if (!m_pDocument->ReplaceIndirectObjectIfHigherGeneration( On 2016/10/01 00:13:11, Tom Sepez wrote: > ...
4 years, 2 months ago (2016-10-01 01:24:06 UTC) #30
Tom Sepez
> https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_stream.cpp#newcode25 > core/fpdfapi/fpdf_parser/cpdf_stream.cpp:25: m_pDict.release(); // lowercase > release, release ownership. > On 2016/10/01 00:34:15, ...
4 years, 2 months ago (2016-10-01 01:45:08 UTC) #31
Tom Sepez
Ok, added a new test, which blows up with segv/double free etc. on current master ...
4 years, 2 months ago (2016-10-03 16:23:45 UTC) #34
Tom Sepez
PTAL again. https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp File core/fpdfapi/fpdf_parser/cpdf_parser.cpp (right): https://codereview.chromium.org/2375343004/diff/20001/core/fpdfapi/fpdf_parser/cpdf_parser.cpp#newcode977 core/fpdfapi/fpdf_parser/cpdf_parser.cpp:977: if (!m_pDocument->ReplaceIndirectObjectIfHigherGeneration( On 2016/10/01 01:24:06, Lei Zhang ...
4 years, 2 months ago (2016-10-03 17:35:05 UTC) #37
Lei Zhang
lgtm https://codereview.chromium.org/2375343004/diff/100001/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp File core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp (right): https://codereview.chromium.org/2375343004/diff/100001/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp#newcode793 core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp:793: // Create an dictionary/array pair with a reference ...
4 years, 2 months ago (2016-10-03 21:14:46 UTC) #42
Tom Sepez
https://codereview.chromium.org/2375343004/diff/100001/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp File core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp (right): https://codereview.chromium.org/2375343004/diff/100001/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp#newcode793 core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp:793: // Create an dictionary/array pair with a reference loop. ...
4 years, 2 months ago (2016-10-03 22:27:00 UTC) #43
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2375343004/120001
4 years, 2 months ago (2016-10-03 22:27:30 UTC) #46
commit-bot: I haz the power
Committed patchset #7 (id:120001) as https://pdfium.googlesource.com/pdfium/+/aba528a362248a54b27a7e9e046e2b65ab83f624
4 years, 2 months ago (2016-10-03 22:40:38 UTC) #48
Lei Zhang
4 years, 2 months ago (2016-10-04 04:27:56 UTC) #49
Message was sent while issue was closed.
A revert of this CL (patchset #7 id:120001) has been created in
https://codereview.chromium.org/2387193003/ by thestig@chromium.org.

The reason for reverting is: Broke PDFExtensionTest when rolling DEPS in
Chromium..

Powered by Google App Engine
This is Rietveld 408576698