Commit Diff


commit - 17c6bcc389f815a32eb7f3885f4241e37ff32678
commit + 27f1f2c2ab804f56b2ae8adcc94e4b78896381aa
blob - d649711646645c3e6fb1a86dac043752e2e4f12a
blob + 0ca63943899675409eb9a1cc3289de56fc925bb9
--- pdf.c
+++ 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");