| line |
true |
false |
branch |
|
30
|
0 |
36 |
if (!obj) return; |
|
35
|
9 |
0 |
if (num < visited_size && !visited[num]) { |
|
|
9 |
0 |
if (num < visited_size && !visited[num]) { |
|
37
|
9 |
0 |
if (*ref_count < ref_cap) { |
|
46
|
12 |
3 |
for (i = 0; i < arr->len; i++) { |
|
54
|
144 |
9 |
for (i = 0; i < dict->cap; i++) { |
|
55
|
21 |
123 |
if (dict->entries[i].key == 0 || dict->entries[i].deleted) continue; |
|
|
0 |
21 |
if (dict->entries[i].key == 0 || dict->entries[i].deleted) continue; |
|
62
|
0 |
0 |
if (stream->dict) { |
|
85
|
9 |
0 |
if (!data || len < 100) return 0; |
|
|
5 |
4 |
if (!data || len < 100) return 0; |
|
89
|
4 |
0 |
end = p + (len < 4096 ? len : 4096); /* Check first 4KB */ |
|
92
|
36 |
0 |
while (p < end && *p != '\n') p++; |
|
|
32 |
4 |
while (p < end && *p != '\n') p++; |
|
93
|
0 |
4 |
if (p >= end) return 0; |
|
97
|
4 |
0 |
if (p < end && *p == '%') { |
|
|
4 |
0 |
if (p < end && *p == '%') { |
|
98
|
24 |
0 |
while (p < end && *p != '\n') p++; |
|
|
20 |
4 |
while (p < end && *p != '\n') p++; |
|
99
|
0 |
4 |
if (p >= end) return 0; |
|
104
|
4 |
0 |
while (p < end && (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r')) p++; |
|
|
0 |
4 |
while (p < end && (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r')) p++; |
|
|
0 |
4 |
while (p < end && (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r')) p++; |
|
|
0 |
4 |
while (p < end && (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r')) p++; |
|
|
0 |
4 |
while (p < end && (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r')) p++; |
|
108
|
0 |
4 |
if (sscanf(p, "%d 0 obj", &obj_num) != 1) return 0; |
|
111
|
36 |
0 |
while (p < end && *p != '<') p++; |
|
|
32 |
4 |
while (p < end && *p != '<') p++; |
|
112
|
4 |
0 |
if (p + 1 >= end || *(p+1) != '<') return 0; |
|
|
0 |
4 |
if (p + 1 >= end || *(p+1) != '<') return 0; |
|
116
|
3 |
1 |
if (!lin || lin >= end) return 0; |
|
|
0 |
3 |
if (!lin || lin >= end) return 0; |
|
126
|
7 |
0 |
if (!doc || doc->obj_count < 1) return 0; |
|
|
5 |
2 |
if (!doc || doc->obj_count < 1) return 0; |
|
130
|
2 |
0 |
if (!obj || obj->kind != PDFMAKE_DICT) return 0; |
|
|
0 |
2 |
if (!obj || obj->kind != PDFMAKE_DICT) return 0; |
|
133
|
0 |
2 |
if (!dict) return 0; |
|
137
|
2 |
2 |
for (i = 0; i < dict->len; i++) { |
|
150
|
0 |
0 |
if (!doc || !out) return PDFMAKE_EINVAL; |
|
|
0 |
0 |
if (!doc || !out) return PDFMAKE_EINVAL; |
|
154
|
0 |
0 |
if (!pdfmake_doc_is_linearized(doc)) { |
|
160
|
0 |
0 |
if (!obj || obj->kind != PDFMAKE_DICT) return PDFMAKE_EINVAL; |
|
|
0 |
0 |
if (!obj || obj->kind != PDFMAKE_DICT) return PDFMAKE_EINVAL; |
|
176
|
0 |
5 |
if (!doc) return NULL; |
|
179
|
0 |
5 |
if (!lin) return NULL; |
|
182
|
0 |
5 |
if (!lin->arena) { |
|
192
|
0 |
5 |
if (!lin->obj_map) { |
|
203
|
0 |
5 |
if (!lin->page_objects) { |
|
212
|
0 |
5 |
if (!lin->ref_counts) { |
|
224
|
0 |
5 |
if (!lin) return; |
|
226
|
5 |
0 |
if (lin->arena) { |
|
255
|
0 |
3 |
if (!objects) return PDFMAKE_ENOMEM; |
|
262
|
0 |
3 |
if (!visited) return PDFMAKE_ENOMEM; |
|
267
|
0 |
3 |
if (!page_obj) return PDFMAKE_EINVAL; |
|
281
|
12 |
3 |
for (i = 0; i < count; i++) { |
|
283
|
12 |
0 |
if (num < lin->obj_map_size) { |
|
298
|
5 |
0 |
if (!lin || !lin->doc) return PDFMAKE_EINVAL; |
|
|
0 |
5 |
if (!lin || !lin->doc) return PDFMAKE_EINVAL; |
|
303
|
4 |
1 |
if (!doc->finalized) { |
|
308
|
3 |
1 |
for (i = 0; i < doc->page_count; i++) { |
|
313
|
0 |
3 |
if (!page) continue; |
|
320
|
0 |
3 |
if (err != PDFMAKE_OK) return err; |
|
326
|
0 |
1 |
if (!lin->shared_objects) return PDFMAKE_ENOMEM; |
|
328
|
12 |
1 |
for (i = 1; i <= doc->obj_count; i++) { |
|
329
|
1 |
11 |
if (lin->ref_counts[i] > 1) { |
|
330
|
0 |
1 |
if (lin->shared_count >= shared_cap) { |
|
346
|
1 |
0 |
if (doc->page_count > 0) { |
|
347
|
4 |
1 |
for (i = 0; i < lin->page_objects[0].count; i++) { |
|
349
|
4 |
0 |
if (old_num < lin->obj_map_size && lin->obj_map[old_num] == 0) { |
|
|
4 |
0 |
if (old_num < lin->obj_map_size && lin->obj_map[old_num] == 0) { |
|
356
|
2 |
1 |
for (p = 1; p < doc->page_count; p++) { |
|
357
|
8 |
2 |
for (i = 0; i < lin->page_objects[p].count; i++) { |
|
360
|
8 |
0 |
if (old_num < lin->obj_map_size && lin->ref_counts[old_num] > 1) { |
|
|
2 |
6 |
if (old_num < lin->obj_map_size && lin->ref_counts[old_num] > 1) { |
|
363
|
6 |
0 |
if (old_num < lin->obj_map_size && lin->obj_map[old_num] == 0) { |
|
|
6 |
0 |
if (old_num < lin->obj_map_size && lin->obj_map[old_num] == 0) { |
|
370
|
1 |
1 |
for (i = 0; i < lin->shared_count; i++) { |
|
372
|
1 |
0 |
if (old_num < lin->obj_map_size && lin->obj_map[old_num] == 0) { |
|
|
0 |
1 |
if (old_num < lin->obj_map_size && lin->obj_map[old_num] == 0) { |
|
378
|
12 |
1 |
for (i = 1; i <= doc->obj_count; i++) { |
|
379
|
2 |
10 |
if (lin->obj_map[i] == 0) { |
|
400
|
5 |
0 |
if (!lin || !lin->doc) return PDFMAKE_EINVAL; |
|
|
0 |
5 |
if (!lin || !lin->doc) return PDFMAKE_EINVAL; |
|
408
|
0 |
5 |
if (!lin->hints.page_hints) return PDFMAKE_ENOMEM; |
|
413
|
8 |
5 |
for (i = 0; i < page_count; i++) { |
|
426
|
12 |
8 |
for (j = 0; j < lin->page_objects[i].count; j++) { |
|
428
|
12 |
0 |
if (num < lin->obj_map_size && lin->ref_counts[num] > 1) { |
|
|
3 |
9 |
if (num < lin->obj_map_size && lin->ref_counts[num] > 1) { |
|
434
|
3 |
5 |
if (shared_count > 0) { |
|
437
|
0 |
3 |
if (!hint->shared_ids) return PDFMAKE_ENOMEM; |
|
440
|
9 |
0 |
for (j = 0; j < lin->page_objects[i].count && idx < shared_count; j++) { |
|
|
6 |
3 |
for (j = 0; j < lin->page_objects[i].count && idx < shared_count; j++) { |
|
442
|
6 |
0 |
if (num < lin->obj_map_size && lin->ref_counts[num] > 1) { |
|
|
3 |
3 |
if (num < lin->obj_map_size && lin->ref_counts[num] > 1) { |
|
445
|
3 |
0 |
for (k = 0; k < lin->shared_count; k++) { |
|
446
|
3 |
0 |
if (lin->shared_objects[k] == num) { |
|
459
|
0 |
5 |
if (!lin->hints.shared_hints && lin->shared_count > 0) return PDFMAKE_ENOMEM; |
|
|
0 |
0 |
if (!lin->hints.shared_hints && lin->shared_count > 0) return PDFMAKE_ENOMEM; |
|
462
|
1 |
5 |
for (i = 0; i < lin->shared_count; i++) { |
|
537
|
2 |
3 |
if (lin->doc->info_num) { |
|
562
|
0 |
5 |
if (err != PDFMAKE_OK) { |
|
597
|
5 |
0 |
if (!lin || !lin->doc || !out) return PDFMAKE_EINVAL; |
|
|
5 |
0 |
if (!lin || !lin->doc || !out) return PDFMAKE_EINVAL; |
|
|
0 |
5 |
if (!lin || !lin->doc || !out) return PDFMAKE_EINVAL; |
|
607
|
0 |
5 |
if (err != PDFMAKE_OK) return err; |
|
611
|
0 |
5 |
if (err != PDFMAKE_OK) return err; |
|
616
|
1 |
4 |
if (catalog) { |
|
623
|
5 |
0 |
if (doc->page_count > 0 && lin->page_objects[0].count > 0) { |
|
|
1 |
4 |
if (doc->page_count > 0 && lin->page_objects[0].count > 0) { |
|
624
|
4 |
1 |
for (i = 0; i < lin->page_objects[0].count; i++) { |
|
627
|
4 |
0 |
if (obj && num != doc->root_num) { |
|
|
4 |
0 |
if (obj && num != doc->root_num) { |
|
641
|
0 |
5 |
if (err != PDFMAKE_OK) return err; |
|
644
|
3 |
5 |
for (p = 1; p < doc->page_count; p++) { |
|
645
|
8 |
3 |
for (i = 0; i < lin->page_objects[p].count; i++) { |
|
649
|
2 |
6 |
if (lin->ref_counts[num] > 1) continue; |
|
652
|
6 |
0 |
if (obj) { |
|
662
|
1 |
5 |
for (i = 0; i < lin->shared_count; i++) { |
|
665
|
1 |
0 |
if (obj) { |
|
682
|
22 |
5 |
for (i = 1; i <= doc->obj_count + 1; i++) { |
|
691
|
2 |
3 |
if (doc->info_num) { |
|
694
|
1 |
4 |
if (doc->id_set) { |
|
696
|
16 |
1 |
for (id_i = 0; id_i < 16; id_i++) { |
|
700
|
16 |
1 |
for (id_i = 0; id_i < 16; id_i++) { |
|
735
|
2 |
0 |
if (!doc || !out) return PDFMAKE_EINVAL; |
|
|
0 |
2 |
if (!doc || !out) return PDFMAKE_EINVAL; |
|
738
|
2 |
0 |
if (!doc->finalized) { |
|
744
|
0 |
0 |
if (!lin) return PDFMAKE_ENOMEM; |
|
748
|
0 |
0 |
if (err != PDFMAKE_OK) { |
|
755
|
0 |
0 |
if (err != PDFMAKE_OK) { |
|
776
|
2 |
0 |
if (!doc || !path) return PDFMAKE_EINVAL; |
|
|
0 |
2 |
if (!doc || !path) return PDFMAKE_EINVAL; |
|
781
|
2 |
0 |
if (err != PDFMAKE_OK) { |
|
787
|
0 |
0 |
if (!fp) { |
|
797
|
0 |
0 |
if (written != pdfmake_buf_len(&buf)) { |
|
813
|
0 |
0 |
if (!fetch) return NULL; |
|
816
|
0 |
0 |
if (!reader) return NULL; |
|
822
|
0 |
0 |
if (!reader->arena) { |
|
832
|
0 |
0 |
if (!reader) return; |
|
834
|
0 |
0 |
if (reader->arena) { |
|
837
|
0 |
0 |
if (reader->doc) { |
|
840
|
0 |
0 |
if (reader->page_loaded) { |
|
843
|
0 |
0 |
if (reader->header_data) { |
|
857
|
0 |
0 |
if (!reader) return PDFMAKE_EINVAL; |
|
862
|
0 |
0 |
if (!reader->header_data) return PDFMAKE_ENOMEM; |
|
865
|
0 |
0 |
if (bytes < 0) { |
|
875
|
0 |
0 |
if (reader->is_linearized) { |
|
881
|
0 |
0 |
if (n_ptr) { |
|
887
|
0 |
0 |
if (l_ptr) { |
|
892
|
0 |
0 |
if (reader->params.page_count > 0) { |
|
895
|
0 |
0 |
if (!reader->page_loaded) return PDFMAKE_ENOMEM; |
|
911
|
0 |
0 |
if (!reader || !reader->is_linearized) return PDFMAKE_EINVAL; |
|
|
0 |
0 |
if (!reader || !reader->is_linearized) return PDFMAKE_EINVAL; |
|
912
|
0 |
0 |
if (reader->hints_loaded) return PDFMAKE_OK; |
|
915
|
0 |
0 |
if (reader->params.hint_offset == 0 || reader->params.hint_length == 0) { |
|
|
0 |
0 |
if (reader->params.hint_offset == 0 || reader->params.hint_length == 0) { |
|
918
|
0 |
0 |
if (h_ptr) { |
|
925
|
0 |
0 |
if (reader->params.hint_offset == 0 || reader->params.hint_length == 0) { |
|
|
0 |
0 |
if (reader->params.hint_offset == 0 || reader->params.hint_length == 0) { |
|
930
|
0 |
0 |
if (!hint_data) return PDFMAKE_ENOMEM; |
|
937
|
0 |
0 |
if (bytes < 0 || (size_t)bytes < reader->params.hint_length) { |
|
|
0 |
0 |
if (bytes < 0 || (size_t)bytes < reader->params.hint_length) { |
|
952
|
0 |
0 |
if (err == PDFMAKE_OK) { |
|
965
|
0 |
0 |
if (!reader || !reader->page_loaded) return 0; |
|
|
0 |
0 |
if (!reader || !reader->page_loaded) return 0; |
|
966
|
0 |
0 |
if (page_num < 0 || (size_t)page_num >= reader->params.page_count) return 0; |
|
|
0 |
0 |
if (page_num < 0 || (size_t)page_num >= reader->params.page_count) return 0; |
|
985
|
0 |
0 |
if (!reader) return PDFMAKE_EINVAL; |
|
986
|
0 |
0 |
if (page_num < 0 || (size_t)page_num >= reader->params.page_count) { |
|
|
0 |
0 |
if (page_num < 0 || (size_t)page_num >= reader->params.page_count) { |
|
991
|
0 |
0 |
if (pdfmake_stream_reader_page_available(reader, page_num)) { |
|
996
|
0 |
0 |
if (!reader->hints_loaded) { |
|
998
|
0 |
0 |
if (err != PDFMAKE_OK) return err; |
|
1003
|
0 |
0 |
if (err != PDFMAKE_OK) return err; |
|
1007
|
0 |
0 |
if (!page_data) return PDFMAKE_ENOMEM; |
|
1010
|
0 |
0 |
if (bytes < 0 || (size_t)bytes < length) { |
|
|
0 |
0 |
if (bytes < 0 || (size_t)bytes < length) { |
|
1037
|
0 |
0 |
if (!reader || !offset || !length) return PDFMAKE_EINVAL; |
|
|
0 |
0 |
if (!reader || !offset || !length) return PDFMAKE_EINVAL; |
|
|
0 |
0 |
if (!reader || !offset || !length) return PDFMAKE_EINVAL; |
|
1038
|
0 |
0 |
if (!reader->hints_loaded) return PDFMAKE_EINVAL; |
|
1039
|
0 |
0 |
if (page_num < 0 || (size_t)page_num >= reader->hints.page_hint_count) { |
|
|
0 |
0 |
if (page_num < 0 || (size_t)page_num >= reader->hints.page_hint_count) { |
|
1048
|
0 |
0 |
for (i = 0; i < page_num; i++) { |
|
1060
|
0 |
0 |
if (!reader) return 0; |
|
1066
|
0 |
0 |
if (!reader) return NULL; |
|
1081
|
0 |
0 |
if (!arena || !data || !out) return PDFMAKE_EINVAL; |
|
|
0 |
0 |
if (!arena || !data || !out) return PDFMAKE_EINVAL; |
|
|
0 |
0 |
if (!arena || !data || !out) return PDFMAKE_EINVAL; |
|
1095
|
0 |
0 |
if (!out->page_hints) return PDFMAKE_ENOMEM; |
|
1100
|
0 |
0 |
if (len < 36) return PDFMAKE_EINVAL; /* Minimum header size */ |
|
1124
|
5 |
0 |
if (!arena || !hints || !out) return PDFMAKE_EINVAL; |
|
|
5 |
0 |
if (!arena || !hints || !out) return PDFMAKE_EINVAL; |
|
|
0 |
5 |
if (!arena || !hints || !out) return PDFMAKE_EINVAL; |
|
1131
|
8 |
5 |
for (i = 0; i < hints->page_hint_count; i++) { |
|
1132
|
5 |
3 |
if (hints->page_hints[i].obj_count < min_obj_count) { |
|
1136
|
0 |
5 |
if (min_obj_count == UINT32_MAX) min_obj_count = 0; |
|
1160
|
8 |
5 |
for (i = 0; i < hints->page_hint_count; i++) { |
|
1161
|
5 |
3 |
if (hints->page_hints[i].page_length < min_len) { |
|
1165
|
0 |
5 |
if (min_len == SIZE_MAX) min_len = 0; |
|
1214
|
8 |
5 |
for (i = 0; i < hints->page_hint_count; i++) { |
|
1237
|
3 |
8 |
for (j = 0; j < hint->shared_count; j++) { |
|
1238
|
3 |
0 |
uint16_t id = hint->shared_ids ? hint->shared_ids[j] : 0; |
|
1245
|
1 |
4 |
if (hints->shared_hint_count > 0) { |
|
1288
|
1 |
1 |
for (i = 0; i < hints->shared_hint_count; i++) { |