/src/qpdf/libqpdf/global.cc
Line | Count | Source |
1 | | #include <qpdf/global_private.hh> |
2 | | |
3 | | #include <qpdf/Util.hh> |
4 | | |
5 | | using namespace qpdf; |
6 | | using namespace qpdf::global; |
7 | | |
8 | | Limits Limits::l; |
9 | | Options Options::o; |
10 | | |
11 | | void |
12 | | Limits::parser_max_container_size(bool damaged, uint32_t value) |
13 | 0 | { |
14 | 0 | if (damaged) { |
15 | 0 | l.parser_max_container_size_damaged_set_ = true; |
16 | 0 | l.parser_max_container_size_damaged_ = value; |
17 | 0 | } else { |
18 | 0 | l.parser_max_container_size_ = value; |
19 | 0 | } |
20 | 0 | } |
21 | | |
22 | | void |
23 | | Limits::disable_defaults() |
24 | 0 | { |
25 | 0 | if (!l.parser_max_errors_set_) { |
26 | 0 | l.parser_max_errors_ = 0; |
27 | 0 | } |
28 | 0 | if (!l.parser_max_container_size_damaged_set_) { |
29 | 0 | l.parser_max_container_size_damaged_ = std::numeric_limits<uint32_t>::max(); |
30 | 0 | } |
31 | 0 | if (!l.max_stream_filters_set_) { |
32 | 0 | l.max_stream_filters_ = std::numeric_limits<uint32_t>::max(); |
33 | 0 | } |
34 | 0 | } |
35 | | |
36 | | qpdf_result_e |
37 | | qpdf_global_get_uint32(qpdf_param_e param, uint32_t* value) |
38 | 0 | { |
39 | 0 | qpdf_expect(value); |
40 | 0 | switch (param) { |
41 | 0 | case qpdf_p_inspection_mode: |
42 | 0 | *value = Options::inspection_mode(); |
43 | 0 | return qpdf_r_ok; |
44 | 0 | case qpdf_p_default_limits: |
45 | 0 | *value = Options::default_limits(); |
46 | 0 | return qpdf_r_ok; |
47 | 0 | case qpdf_p_limit_errors: |
48 | 0 | *value = Limits::errors(); |
49 | 0 | return qpdf_r_ok; |
50 | 0 | case qpdf_p_parser_max_nesting: |
51 | 0 | *value = Limits::parser_max_nesting(); |
52 | 0 | return qpdf_r_ok; |
53 | 0 | case qpdf_p_parser_max_errors: |
54 | 0 | *value = Limits::parser_max_errors(); |
55 | 0 | return qpdf_r_ok; |
56 | 0 | case qpdf_p_parser_max_container_size: |
57 | 0 | *value = Limits::parser_max_container_size(false); |
58 | 0 | return qpdf_r_ok; |
59 | 0 | case qpdf_p_parser_max_container_size_damaged: |
60 | 0 | *value = Limits::parser_max_container_size(true); |
61 | 0 | return qpdf_r_ok; |
62 | 0 | case qpdf_p_max_stream_filters: |
63 | 0 | *value = Limits::max_stream_filters(); |
64 | 0 | return qpdf_r_ok; |
65 | 0 | default: |
66 | 0 | return qpdf_r_bad_parameter; |
67 | 0 | } |
68 | 0 | } |
69 | | |
70 | | qpdf_result_e |
71 | | qpdf_global_set_uint32(qpdf_param_e param, uint32_t value) |
72 | 0 | { |
73 | 0 | switch (param) { |
74 | 0 | case qpdf_p_inspection_mode: |
75 | 0 | Options::inspection_mode(value); |
76 | 0 | return qpdf_r_ok; |
77 | 0 | case qpdf_p_default_limits: |
78 | 0 | Options::default_limits(value); |
79 | 0 | return qpdf_r_ok; |
80 | 0 | case qpdf_p_parser_max_nesting: |
81 | 0 | Limits::parser_max_nesting(value); |
82 | 0 | return qpdf_r_ok; |
83 | 0 | case qpdf_p_parser_max_errors: |
84 | 0 | Limits::parser_max_errors(value); |
85 | 0 | return qpdf_r_ok; |
86 | 0 | case qpdf_p_parser_max_container_size: |
87 | 0 | Limits::parser_max_container_size(false, value); |
88 | 0 | return qpdf_r_ok; |
89 | 0 | case qpdf_p_parser_max_container_size_damaged: |
90 | 0 | Limits::parser_max_container_size(true, value); |
91 | 0 | return qpdf_r_ok; |
92 | 0 | case qpdf_p_max_stream_filters: |
93 | 0 | Limits::max_stream_filters(value); |
94 | 0 | return qpdf_r_ok; |
95 | 0 | default: |
96 | 0 | return qpdf_r_bad_parameter; |
97 | 0 | } |
98 | 0 | } |