From 27f1f2c2ab804f56b2ae8adcc94e4b78896381aa Mon Sep 17 00:00:00 2001
From: Pompolic <pompolic@special-circumstanc.es>
Date: Wed, 29 Apr 2020 18:03:20 +0200
Subject: [PATCH] Crash fix for !9

---
 pdf.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/pdf.c b/pdf.c
index d649711..0ca6394 100644
--- a/pdf.c
+++ b/pdf.c
@@ -741,7 +741,7 @@ act_xrstm(const HParseResult *p, void *u)
 
 	dict = H_INDEX_TOKEN(p->ast, 1, 0);
 	res = H_FIELD(HParseResult, 1, 1);	// XXX free this
-	xrefs = res->ast;
+	xrefs = res ? res->ast : NULL;
 
 	tok = H_MAKE_SEQN(2);
 	tok->seq->elements[0] = (HParsedToken *)xrefs;
@@ -758,9 +758,16 @@ act_xrstm(const HParseResult *p, void *u)
 bool
 validate_xrstm(HParseResult *p, void *u)
 {
+	const HParsedToken *xrefs = H_INDEX_TOKEN(p->ast, 1, 1);
 	const Dict *tdict = H_FIELD(Dict, 1, 0);
 	const HParsedToken *v = dictentry(tdict, "Type");
 
+	if (!xrefs)
+	{
+		fprintf(stderr, "XRef table missing or corrupt!");
+		return false;
+	}
+
 #if 0
 	if (v == NULL)
 		fprintf(stderr, "stream dict has no /Type\n");
-- 
GitLab