File 0001-Fix-opening-files-by-some-generators-that-are-a-bit-.patch of Package poppler.38201
diff --unified --recursive --text poppler-0.79.0.orig/poppler/XRef.cc poppler-0.79.0.new/poppler/XRef.cc
--- poppler-0.79.0.orig/poppler/XRef.cc 2021-02-08 10:59:02.753940841 +0800
+++ poppler-0.79.0.new/poppler/XRef.cc 2021-02-08 11:02:35.713518176 +0800
@@ -44,6 +44,7 @@
#include <ctype.h>
#include <limits.h>
#include <float.h>
+#include <limits>
#include "goo/gfile.h"
#include "goo/gmem.h"
#include "Object.h"
@@ -781,8 +782,13 @@
gen = (gen << 8) + c;
}
if (gen > INT_MAX) {
- error(errSyntaxError, -1, "Gen inside xref table too large (bigger than INT_MAX)");
- return false;
+ if (i == 0 && gen == std::numeric_limits<uint32_t>::max()) {
+ // workaround broken generators
+ gen = 65535;
+ } else {
+ error(errSyntaxError, -1, "Gen inside xref table too large (bigger than INT_MAX)");
+ return false;
+ }
}
if (entries[i].offset == -1) {
switch (type) {