[poppler] poppler/poppler: CharCodeToUnicode.cc,1.3,1.4
Albert Astals Cid
aacid at freedesktop.org
Wed Jan 18 10:54:14 PST 2006
Update of /cvs/poppler/poppler/poppler
In directory gabe:/tmp/cvs-serv27079/poppler
Modified Files:
CharCodeToUnicode.cc
Log Message:
poppler/CharCodeToUnicode.cc: Fix check for length that was not
having into account that there could be \n or \r in tokens an that
those do not have to be took into account. Fixes
http://bugs.kde.org/show_bug.cgi?id=120310
Index: CharCodeToUnicode.cc
===================================================================
RCS file: /cvs/poppler/poppler/poppler/CharCodeToUnicode.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- CharCodeToUnicode.cc 16 Sep 2005 18:38:58 -0000 1.3
+++ CharCodeToUnicode.cc 18 Jan 2006 18:54:12 -0000 1.4
@@ -243,8 +243,18 @@
}
if (!(n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
tok2[0] == '<' && tok2[n2 - 1] == '>')) {
- error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
- continue;
+
+ // check there was no line jump inside the token and so the length is
+ // longer than it should be
+ int countAux = 0;
+ for (int k = 0; k < n1; k++)
+ if (tok1[k] != '\n' && tok1[k] != '\r') countAux++;
+
+ if (!(countAux == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
+ tok2[0] == '<' && tok2[n2 - 1] == '>')) {
+ error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
+ continue;
+ }
}
tok1[n1 - 1] = tok2[n2 - 1] = '\0';
if (sscanf(tok1 + 1, "%x", &code1) != 1) {
@@ -268,8 +278,21 @@
}
if (!(n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
n2 == 2 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>')) {
- error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
- continue;
+ // check there was no line jump inside the token and so the length is
+ // longer than it should be
+ int countAux = 0;
+ for (int k = 0; k < n1; k++)
+ if (tok1[k] != '\n' && tok1[k] != '\r') countAux++;
+
+ int countAux2 = 0;
+ for (int k = 0; k < n1; k++)
+ if (tok2[k] != '\n' && tok2[k] != '\r') countAux++;
+
+ if (!(countAux == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
+ countAux2 == 2 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>')) {
+ error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
+ continue;
+ }
}
tok1[n1 - 1] = tok2[n2 - 1] = '\0';
if (sscanf(tok1 + 1, "%x", &code1) != 1 ||
More information about the poppler
mailing list