| OLD | NEW |
| 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_dictionary.h" | 8 #include "core/fpdfapi/parser/cpdf_dictionary.h" |
| 9 #include "core/fpdfapi/parser/cpdf_hint_tables.h" | 9 #include "core/fpdfapi/parser/cpdf_hint_tables.h" |
| 10 #include "core/fpdfapi/parser/cpdf_linearized_header.h" | 10 #include "core/fpdfapi/parser/cpdf_linearized_header.h" |
| 11 #include "core/fpdfapi/parser/cpdf_number.h" |
| 11 #include "third_party/base/ptr_util.h" | 12 #include "third_party/base/ptr_util.h" |
| 12 | 13 |
| 13 int32_t GetData(const int32_t** data32, const uint8_t** data, size_t* size) { | 14 int32_t GetData(const int32_t** data32, const uint8_t** data, size_t* size) { |
| 14 const int32_t* ret = *data32; | 15 const int32_t* ret = *data32; |
| 15 ++(*data32); | 16 ++(*data32); |
| 16 *data += 4; | 17 *data += 4; |
| 17 *size -= 4; | 18 *size -= 4; |
| 18 return *ret; | 19 return *ret; |
| 19 } | 20 } |
| 20 | 21 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 linearized_dict->SetIntegerFor("E", GetData(&data32, &data, &size)); | 67 linearized_dict->SetIntegerFor("E", GetData(&data32, &data, &size)); |
| 67 // Set page count | 68 // Set page count |
| 68 linearized_dict->SetIntegerFor("N", GetData(&data32, &data, &size)); | 69 linearized_dict->SetIntegerFor("N", GetData(&data32, &data, &size)); |
| 69 // Set first page obj num | 70 // Set first page obj num |
| 70 linearized_dict->SetIntegerFor("O", GetData(&data32, &data, &size)); | 71 linearized_dict->SetIntegerFor("O", GetData(&data32, &data, &size)); |
| 71 // Set first page no | 72 // Set first page no |
| 72 linearized_dict->SetIntegerFor("P", GetData(&data32, &data, &size)); | 73 linearized_dict->SetIntegerFor("P", GetData(&data32, &data, &size)); |
| 73 | 74 |
| 74 auto hint_info = pdfium::MakeUnique<CPDF_Array>(); | 75 auto hint_info = pdfium::MakeUnique<CPDF_Array>(); |
| 75 // Add primary hint stream offset | 76 // Add primary hint stream offset |
| 76 hint_info->AddInteger(GetData(&data32, &data, &size)); | 77 hint_info->AddNew<CPDF_Number>(GetData(&data32, &data, &size)); |
| 77 // Add primary hint stream size | 78 // Add primary hint stream size |
| 78 hint_info->AddInteger(GetData(&data32, &data, &size)); | 79 hint_info->AddNew<CPDF_Number>(GetData(&data32, &data, &size)); |
| 79 // Set hint stream info. | 80 // Set hint stream info. |
| 80 linearized_dict->SetFor("H", hint_info.release()); | 81 linearized_dict->SetFor("H", hint_info.release()); |
| 81 | 82 |
| 82 const int shared_hint_table_offset = GetData(&data32, &data, &size); | 83 const int shared_hint_table_offset = GetData(&data32, &data, &size); |
| 83 | 84 |
| 84 { | 85 { |
| 85 FakeLinearized linearized(linearized_dict.get()); | 86 FakeLinearized linearized(linearized_dict.get()); |
| 86 HintTableForFuzzing hint_table(&linearized, shared_hint_table_offset); | 87 HintTableForFuzzing hint_table(&linearized, shared_hint_table_offset); |
| 87 hint_table.Fuzz(data, size); | 88 hint_table.Fuzz(data, size); |
| 88 } | 89 } |
| 89 return 0; | 90 return 0; |
| 90 } | 91 } |
| OLD | NEW |