From 46a1a486642a32cf33546d901ea384f4bd7dec64 Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" <pesco@khjk.org> Date: Wed, 27 Apr 2022 00:10:28 +0200 Subject: [PATCH] fix/remove tautological ascii85 validations --- pdf.c | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/pdf.c b/pdf.c index 8873989..058423e 100644 --- a/pdf.c +++ b/pdf.c @@ -701,8 +701,7 @@ act_ahexstream(const HParseResult *p, void *u) -/* 2^32-1, the max value the group can hold as per spec */ -#define A85GRPMAX 4294967295 +#include <limits.h> /* UINT32_MAX */ HParsedToken * act_a85zero(const HParseResult *p, void *u) @@ -724,7 +723,7 @@ act_a85digit(const HParseResult *p, void *u) HParsedToken * act_a85fivedigits(const HParseResult *p, void *u) { - uint32_t fourbytes = 0; + uint64_t fourbytes = 0; HCountedArray *seq = H_CAST_SEQ(p->ast); HParsedToken **digits = h_seq_elements(p->ast); @@ -748,12 +747,12 @@ validate_a85fivedigits(HParseResult *p, void *u) /* 2^32-1 is the max value the group can hold as per spec */ /* "s8W-!" should be the highest accepted value */ - uint32_t val = H_CAST_UINT(p->ast); + uint64_t val = H_CAST_UINT(p->ast); // look into approaches to reporting violations // from these validation check routines // XXX: VIOL() wrappers for a85fivedigits - return ( (val > 0) && (val <= A85GRPMAX) ); + return ( (val > 0) && (val <= UINT32_MAX) ); } HParsedToken * @@ -804,12 +803,6 @@ act_a85partial2group(const HParseResult *p, void *u) return H_MAKE_BYTES(bytes, 1); } -bool -validate_a85partial2group(HParseResult *p, void *u) -{ - return (H_CAST_BYTES(p->ast).token[0] << 24) <= A85GRPMAX; -} - HParsedToken * act_a85partial3group(const HParseResult *p, void *u) { @@ -844,12 +837,6 @@ act_a85partial3group(const HParseResult *p, void *u) return H_MAKE_BYTES(bytes, 2); } -bool -validate_a85partial3group(HParseResult *p, void *u) -{ - return ((H_CAST_BYTES(p->ast).token[0] << 24) + (H_CAST_BYTES(p->ast).token[1] << 16)) <= A85GRPMAX; -} - HParsedToken * act_a85partial4group(const HParseResult *p, void *u) { @@ -880,12 +867,6 @@ act_a85partial4group(const HParseResult *p, void *u) return H_MAKE_BYTES(bytes, 3); } -bool -validate_a85partial4group(HParseResult *p, void *u) -{ - return ((H_CAST_BYTES(p->ast).token[0] << 24) + (H_CAST_BYTES(p->ast).token[1] << 16) + (H_CAST_BYTES(p->ast).token[2] << 8)) <= A85GRPMAX; -} - HParsedToken * act_a85partialgroup(const HParseResult *p, void *u) { @@ -3012,9 +2993,9 @@ init_parser(struct Env *aux) // TODO:: will need to pull out error conditions -- a85fiveexcl or 'z' as one of the digits H_ARULE(a85group, CHX(a85zero, a85fivedigits)); - H_VARULE(a85partial2group, h_repeat_n(SEQ(a85digit, aws), 2)); - H_VARULE(a85partial3group, h_repeat_n(SEQ(a85digit, aws), 3)); - H_VARULE(a85partial4group, h_repeat_n(SEQ(a85digit, aws), 4)); + H_ARULE(a85partial2group, h_repeat_n(SEQ(a85digit, aws), 2)); + H_ARULE(a85partial3group, h_repeat_n(SEQ(a85digit, aws), 3)); + H_ARULE(a85partial4group, h_repeat_n(SEQ(a85digit, aws), 4)); H_RULE(a85partialgroup, CHX(a85partial4group, a85partial3group, a85partial2group)); H_ARULE(a85string, SEQ(h_many(a85group), h_optional(a85partialgroup), IGN(a85eod))); -- GitLab