mirror of https://github.com/qpdf/qpdf.git
Detect JSON object whose value is an indirect object
This commit is contained in:
parent
7ae095fa09
commit
3490090fbc
|
@ -0,0 +1 @@
|
||||||
|
{"qpdf":[{},{"obj:1 0 R":{"value":"2 0 R"
|
|
@ -16,7 +16,7 @@ my @fuzzers = (
|
||||||
['dct' => 1],
|
['dct' => 1],
|
||||||
['flate' => 1],
|
['flate' => 1],
|
||||||
['hex' => 1],
|
['hex' => 1],
|
||||||
['json' => 38],
|
['json' => 39],
|
||||||
['lzw' => 2],
|
['lzw' => 2],
|
||||||
['pngpredictor' => 1],
|
['pngpredictor' => 1],
|
||||||
['runlength' => 6],
|
['runlength' => 6],
|
||||||
|
|
|
@ -441,6 +441,10 @@ QPDF::JSONReactor::containerEnd(JSON const& value)
|
||||||
void
|
void
|
||||||
QPDF::JSONReactor::replaceObject(QPDFObjectHandle&& replacement, JSON const& value)
|
QPDF::JSONReactor::replaceObject(QPDFObjectHandle&& replacement, JSON const& value)
|
||||||
{
|
{
|
||||||
|
if (replacement.isIndirect()) {
|
||||||
|
error(replacement.getParsedOffset(), "the value of an object may not be an indirect object reference");
|
||||||
|
return;
|
||||||
|
}
|
||||||
auto& tos = stack.back();
|
auto& tos = stack.back();
|
||||||
auto og = tos.object.getObjGen();
|
auto og = tos.object.getObjGen();
|
||||||
this->pdf.replaceObject(og, replacement);
|
this->pdf.replaceObject(og, replacement);
|
||||||
|
|
|
@ -28,6 +28,7 @@ my @badfiles = (
|
||||||
'objects-not-dict',
|
'objects-not-dict',
|
||||||
'bad-object-key',
|
'bad-object-key',
|
||||||
'object-not-dict',
|
'object-not-dict',
|
||||||
|
'object-value-indirect',
|
||||||
'stream-not-dict',
|
'stream-not-dict',
|
||||||
'stream-dict-not-dict',
|
'stream-dict-not-dict',
|
||||||
'trailer-not-dict',
|
'trailer-not-dict',
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
{
|
||||||
|
"qpdf": [
|
||||||
|
{
|
||||||
|
"jsonversion": 2,
|
||||||
|
"pdfversion": "1.3",
|
||||||
|
"maxobjectid": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"obj:1 0 R": {
|
||||||
|
"value": "2 0 R"
|
||||||
|
},
|
||||||
|
"obj:2 0 R": {
|
||||||
|
"value": {
|
||||||
|
"/Count": 1,
|
||||||
|
"/Kids": [
|
||||||
|
"3 0 R"
|
||||||
|
],
|
||||||
|
"/Type": "/Pages"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"obj:3 0 R": {
|
||||||
|
"value": {
|
||||||
|
"/Contents": "4 0 R",
|
||||||
|
"/MediaBox": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
612,
|
||||||
|
792
|
||||||
|
],
|
||||||
|
"/Parent": "2 0 R",
|
||||||
|
"/Resources": {
|
||||||
|
"/Font": {
|
||||||
|
"/F1": "6 0 R"
|
||||||
|
},
|
||||||
|
"/ProcSet": "5 0 R"
|
||||||
|
},
|
||||||
|
"/Type": "/Page"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"obj:4 0 R": {
|
||||||
|
"stream": {
|
||||||
|
"data": "QlQKICAvRjEgMjQgVGYKICA3MiA3MjAgVGQKICAoUG90YXRvKSBUagpFVAo=",
|
||||||
|
"dict": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"obj:5 0 R": {
|
||||||
|
"value": [
|
||||||
|
"/PDF",
|
||||||
|
"/Text"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"obj:6 0 R": {
|
||||||
|
"value": {
|
||||||
|
"/BaseFont": "/Helvetica",
|
||||||
|
"/Encoding": "/WinAnsiEncoding",
|
||||||
|
"/Subtype": "/Type1",
|
||||||
|
"/Type": "/Font"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"trailer": {
|
||||||
|
"value": {
|
||||||
|
"/Root": "1 0 R",
|
||||||
|
"/Size": 7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
WARNING: qjson-object-value-indirect.json (obj:1 0 R): the value of an object may not be an indirect object reference
|
||||||
|
qpdf: qjson-object-value-indirect.json: errors found in JSON
|
Loading…
Reference in New Issue