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

Side by Side Diff: testing/libfuzzer/pdf_hint_table_fuzzer.cc

Issue 2510223002: Make CPDF_Dictionary use unique pointers. (Closed)
Patch Set: rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/javascript/Document.cpp ('k') | xfa/fxfa/app/xfa_fontmgr.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The PDFium Authors. All rights reserved. 1 // Copyright 2016 The PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <cstdint> 5 #include <cstdint>
6 6
7 #include "core/fpdfapi/parser/cpdf_array.h" 7 #include "core/fpdfapi/parser/cpdf_array.h"
8 #include "core/fpdfapi/parser/cpdf_boolean.h"
8 #include "core/fpdfapi/parser/cpdf_dictionary.h" 9 #include "core/fpdfapi/parser/cpdf_dictionary.h"
9 #include "core/fpdfapi/parser/cpdf_hint_tables.h" 10 #include "core/fpdfapi/parser/cpdf_hint_tables.h"
10 #include "core/fpdfapi/parser/cpdf_linearized_header.h" 11 #include "core/fpdfapi/parser/cpdf_linearized_header.h"
11 #include "core/fpdfapi/parser/cpdf_number.h" 12 #include "core/fpdfapi/parser/cpdf_number.h"
12 #include "third_party/base/ptr_util.h" 13 #include "third_party/base/ptr_util.h"
13 14
14 int32_t GetData(const int32_t** data32, const uint8_t** data, size_t* size) { 15 int32_t GetData(const int32_t** data32, const uint8_t** data, size_t* size) {
15 const int32_t* ret = *data32; 16 const int32_t* ret = *data32;
16 ++(*data32); 17 ++(*data32);
17 *data += 4; 18 *data += 4;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 // Need 28 bytes for |linearized_dict|. 56 // Need 28 bytes for |linearized_dict|.
56 // The header section of page offset hint table is 36 bytes. 57 // The header section of page offset hint table is 36 bytes.
57 // The header section of shared object hint table is 24 bytes. 58 // The header section of shared object hint table is 24 bytes.
58 if (size < 28 + 36 + 24) 59 if (size < 28 + 36 + 24)
59 return 0; 60 return 0;
60 61
61 const int32_t* data32 = reinterpret_cast<const int32_t*>(data); 62 const int32_t* data32 = reinterpret_cast<const int32_t*>(data);
62 63
63 auto linearized_dict = pdfium::MakeUnique<CPDF_Dictionary>(); 64 auto linearized_dict = pdfium::MakeUnique<CPDF_Dictionary>();
64 // Set initial value. 65 // Set initial value.
65 linearized_dict->SetBooleanFor("Linearized", true); 66 linearized_dict->SetNewFor<CPDF_Boolean>("Linearized", true);
66 // Set first page end offset 67 // Set first page end offset
67 linearized_dict->SetIntegerFor("E", GetData(&data32, &data, &size)); 68 linearized_dict->SetNewFor<CPDF_Number>("E", GetData(&data32, &data, &size));
68 // Set page count 69 // Set page count
69 linearized_dict->SetIntegerFor("N", GetData(&data32, &data, &size)); 70 linearized_dict->SetNewFor<CPDF_Number>("N", GetData(&data32, &data, &size));
70 // Set first page obj num 71 // Set first page obj num
71 linearized_dict->SetIntegerFor("O", GetData(&data32, &data, &size)); 72 linearized_dict->SetNewFor<CPDF_Number>("O", GetData(&data32, &data, &size));
72 // Set first page no 73 // Set first page no
73 linearized_dict->SetIntegerFor("P", GetData(&data32, &data, &size)); 74 linearized_dict->SetNewFor<CPDF_Number>("P", GetData(&data32, &data, &size));
74 75
75 auto hint_info = pdfium::MakeUnique<CPDF_Array>(); 76 auto hint_info = pdfium::MakeUnique<CPDF_Array>();
76 // Add primary hint stream offset 77 // Add primary hint stream offset
77 hint_info->AddNew<CPDF_Number>(GetData(&data32, &data, &size)); 78 hint_info->AddNew<CPDF_Number>(GetData(&data32, &data, &size));
78 // Add primary hint stream size 79 // Add primary hint stream size
79 hint_info->AddNew<CPDF_Number>(GetData(&data32, &data, &size)); 80 hint_info->AddNew<CPDF_Number>(GetData(&data32, &data, &size));
80 // Set hint stream info. 81 // Set hint stream info.
81 linearized_dict->SetFor("H", hint_info.release()); 82 linearized_dict->SetFor("H", std::move(hint_info));
82 83
83 const int shared_hint_table_offset = GetData(&data32, &data, &size); 84 const int shared_hint_table_offset = GetData(&data32, &data, &size);
84 85
85 { 86 {
86 FakeLinearized linearized(linearized_dict.get()); 87 FakeLinearized linearized(linearized_dict.get());
87 HintTableForFuzzing hint_table(&linearized, shared_hint_table_offset); 88 HintTableForFuzzing hint_table(&linearized, shared_hint_table_offset);
88 hint_table.Fuzz(data, size); 89 hint_table.Fuzz(data, size);
89 } 90 }
90 return 0; 91 return 0;
91 } 92 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/Document.cpp ('k') | xfa/fxfa/app/xfa_fontmgr.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698