diff --git a/pdf.c b/pdf.c index 3c181c38bab98c093a7a350fb96627d192dca0b3..8841d3f856cf630fdaf8a38f662a66d3faf98d9f 100644 --- a/pdf.c +++ b/pdf.c @@ -949,6 +949,12 @@ act_xrent(const HParseResult *p, void *u) return H_MAKE(XREntry, xr); } +bool +validate_xrstment(HParseResult *p, void *u) +{ + return (H_FIELD_UINT(0) <= INT_MAX); +} + HParsedToken * act_xrstment(const HParseResult *p, void *u) { @@ -4670,6 +4676,7 @@ p_xrefdata__m(HAllocator *mm__, const Dict *dict) if (Wskip > 0) // XXX h_skip does not work with CF, yet return p_fail; p_entry = h_sequence__m(mm__, p_field[0], p_field[1], p_field[2], NULL); + p_entry = h_attr_bool__m(mm__, p_entry, validate_xrstment, NULL); p_entry = h_action__m(mm__, p_entry, act_xrstment, NULL); /* Index (optional) - subsections [base count ...] */