Coverage Report

Created: 2025-12-05 06:54

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
}