Add more validation in the Catalog.prototype.getPageIndex method

- Ensure that the /Kids-entries are Arrays, before trying to iterate through them.
 - Ensure that the /Count-entries are (positive) integers.
This commit is contained in:
Jonas Jenwald 2026-04-27 11:46:17 +02:00
parent a1b7d0feb5
commit 339f755a52

View File

@ -1495,6 +1495,9 @@ class Catalog {
if (!kids) {
return null;
}
if (!Array.isArray(kids)) {
throw new FormatError("Kids must be an array.");
}
const kidPromises = [];
let found = false;
@ -1512,11 +1515,15 @@ class Catalog {
throw new FormatError("Kid node must be a dictionary.");
}
if (obj.has("Count")) {
total += obj.get("Count");
} else {
// Page leaf node.
total++;
const count = obj.get("Count");
if (Number.isInteger(count) && count >= 0) {
total += count;
return;
}
throw new FormatError("Count must be a (positive) integer.");
}
// Page leaf node.
total++;
})
);
}