Subject: xfig: wrong search of mediabox when importing PDF
Package: xfig
Version: 1:3.2.5-rel-3
Severity: normal
Tags: patch
*** Please type your report below this line ***
When you import a PDF file, xfig tries to calculate the size of object by
searching "/MediaBox" attribute. But it only tries to find the attribute at the
begining of a
line.
Moreover, in the same stanza, it calls "strchr" and adds +1 then compares the
result to NULL for error checking. But the +1 makes the errochecking incrorrect.
The included patch corrects this.
-- System Information:
Debian Release: 5.0.1
APT prefers stable
APT policy: (900, 'stable'), (50, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.27.9 (PREEMPT)
Locale: lang=fr...@euro, lc_ctype=fr...@euro (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash
Versions of packages xfig depends on:
ii libc6 2.7-18 GNU C Library: Shared libraries
ii libjpeg62 6b-14 The Independent JPEG Group's JPEG
ii libpng12-0 1.2.27-2+lenny2 PNG library - runtime
ii libx11-6 2:1.1.5-2 X11 client-side library
ii libxi6 2:1.1.4-1 X11 Input extension library
ii libxpm4 1:3.5.7-1 X11 pixmap library
ii libxt6 1:1.0.5-3 X11 toolkit intrinsics library
ii xaw3dg 1.5+E-17 Xaw3d widget set
Versions of packages xfig recommends:
ii transfig 1:3.2.5-rel-3.1 Utilities for converting XFig figu
ii xfig-libs 1:3.2.5-rel-3 XFig image libraries and examples
Versions of packages xfig suggests:
ii cups-bsd [lpr] 1.3.8-1lenny5 Common UNIX Printing System(tm) -
ii cups-client 1.3.8-1lenny5 Common UNIX Printing System(tm) -
ii ghostscript 8.62.dfsg.1-3.2lenny1 The GPL Ghostscript PostScript/PDF
ii gimp 2.4.7-1 The GNU Image Manipulation Program
ii gsfonts-x11 0.21 Make Ghostscript fonts available t
ii netpbm 2:10.0-12 Graphics conversion tools
pn spell <none> (no description available)
pn xfig-doc <none> (no description available)
-- no debconf information
--- /opt/tmp/xfig-3.2.5-rel/f_readeps.c 2005-10-31 18:40:38.000000000 +0100
+++ xfig-3.2.5-rel/f_readeps.c 2009-05-27 21:19:54.000000000 +0200
@@ -77,11 +77,13 @@
/* look for /MediaBox for pdf file */
if (pdf_flag) {
- if (!strncmp(buf, "/MediaBox", 8)) { /* look for the MediaBox spec */
+ char *s;
+ for(s=buf; (s=strchr(s,'/')); s++) {
+ if (!strncmp(s, "/MediaBox", 8)) { /* look for the MediaBox spec */
char *c;
- c = strchr(buf, '[') + 1;
- if (c && sscanf(c, "%d %d %d %d", &llx, &lly, &urx, &ury) < 4) {
+ c = strchr(s, '[');
+ if (c && sscanf(c+1, "%d %d %d %d", &llx, &lly, &urx, &ury) < 4) {
llx = lly = 0;
urx = paper_sizes[0].width * 72 / PIX_PER_INCH;
ury = paper_sizes[0].height * 72 / PIX_PER_INCH;
@@ -89,7 +91,9 @@
appres.INCHES ? "Letter" : "A4");
app_flush();
}
+ break;
}
+ }
/* look for bounding box */
} else if (!nested && !strncmp(buf, "%%BoundingBox:", 14)) {
if (!strstr(buf, "(atend)")) { /* make sure doesn't say (atend) */