Compare commits
No commits in common. "c8s" and "c9s" have entirely different histories.
5
.gitignore
vendored
5
.gitignore
vendored
@ -1 +1,6 @@
|
|||||||
|
transfig.3.2.5c.tar.gz
|
||||||
|
/transfig.3.2.5d.tar.gz
|
||||||
|
/fig2dev-3.2.6.tar.xz
|
||||||
/fig2dev-3.2.6a.tar.xz
|
/fig2dev-3.2.6a.tar.xz
|
||||||
|
/fig2dev-3.2.7a.tar.xz
|
||||||
|
/fig2dev-3.2.7b.tar.xz
|
||||||
|
1
.transfig.metadata
Normal file
1
.transfig.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
8097c178b7fff1023112250938cc87837c0f564e fig2dev-3.2.7b.tar.xz
|
77
0001-Embed-png-and-jpeg-images-unchanged-into-pdfs.patch
Normal file
77
0001-Embed-png-and-jpeg-images-unchanged-into-pdfs.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
From 841c88cdd31eece97a929fbc01902a33d6168b00 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||||
|
Date: Sun, 10 Nov 2019 22:53:23 +0100
|
||||||
|
Subject: [PATCH 1/8] Embed png and jpeg images unchanged into pdfs
|
||||||
|
|
||||||
|
Before, with the "-dAutoFilterColorImages=false -dColorImageFilter=/DCTEncode"
|
||||||
|
switches to pdf, png-files were re-encoded to jpegs.
|
||||||
|
---
|
||||||
|
CHANGES | 9 ++++++++-
|
||||||
|
fig2dev/dev/genpdf.c | 6 ++----
|
||||||
|
version.m4 | 6 +++---
|
||||||
|
3 files changed, 13 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGES b/CHANGES
|
||||||
|
index 2a9c1fb..2cdfda0 100644
|
||||||
|
--- a/CHANGES
|
||||||
|
+++ b/CHANGES
|
||||||
|
@@ -2,7 +2,14 @@ Changes to fig2dev
|
||||||
|
===============================================================================
|
||||||
|
Version 3.2
|
||||||
|
===============================================================================
|
||||||
|
-Patchlevel 7b (Oct 2019)
|
||||||
|
+Patchlevel Xx (Xxx 20xx)
|
||||||
|
+
|
||||||
|
+BUGS FIXED:
|
||||||
|
+ o Embed images in pdfs with their original compression type, i.e., leave
|
||||||
|
+ the gs switch "-dAutoFilterColorImages" at its default value "true".
|
||||||
|
+
|
||||||
|
+-------------------------------------
|
||||||
|
+Patchlevel 7b (Nov 2019)
|
||||||
|
|
||||||
|
NEW FEATURES:
|
||||||
|
o A X color database is not needed, but can be provided. The location of
|
||||||
|
diff --git a/fig2dev/dev/genpdf.c b/fig2dev/dev/genpdf.c
|
||||||
|
index d5b3a5a..1ddaa40 100644
|
||||||
|
--- a/fig2dev/dev/genpdf.c
|
||||||
|
+++ b/fig2dev/dev/genpdf.c
|
||||||
|
@@ -91,10 +91,8 @@ genpdf_start(F_compound *objects)
|
||||||
|
*/
|
||||||
|
/* -o ... is equivalent to -dBATCH -dNOPAUSE, see ghostscript Use.htm
|
||||||
|
and -dBATCH is equivalent to -c quit */
|
||||||
|
- sprintf(com, "%s -q -sAutoRotatePages=None "
|
||||||
|
- "-dAutoFilterColorImages=false -dColorImageFilter=/DCTEncode "
|
||||||
|
- "-sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -o '%s' -",
|
||||||
|
- GSEXE, ofile);
|
||||||
|
+ sprintf(com, "%s -q -sAutoRotatePages=None -sDEVICE=pdfwrite "
|
||||||
|
+ "-dPDFSETTINGS=/prepress -o '%s' -", GSEXE, ofile);
|
||||||
|
(void) signal(SIGPIPE, pdf_broken_pipe);
|
||||||
|
if ((tfp = popen(com, "w")) == 0) {
|
||||||
|
fprintf(stderr, "fig2dev: Cannot open pipe to ghostscript\n");
|
||||||
|
diff --git a/version.m4 b/version.m4
|
||||||
|
index faf88ad..fa546d9 100644
|
||||||
|
--- a/version.m4
|
||||||
|
+++ b/version.m4
|
||||||
|
@@ -2,7 +2,7 @@ dnl Fig2dev: Translate Fig code to various Devices
|
||||||
|
dnl Copyright (c) 1991 by Micah Beck
|
||||||
|
dnl Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
dnl Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
-dnl Parts Copyright (c) 2015-2018 by Thomas Loimer
|
||||||
|
+dnl Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
dnl
|
||||||
|
dnl Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
dnl full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -22,8 +22,8 @@ dnl Thus, configure.ac can remain unchanged between different versions.
|
||||||
|
dnl The values in this file are set by update_version_m4 if
|
||||||
|
dnl ./configure is called with --enable_versioning.
|
||||||
|
|
||||||
|
-m4_define([FIG_VERSION], [3.2.7b])
|
||||||
|
+m4_define([FIG_VERSION], [3.2.7b-dev])
|
||||||
|
|
||||||
|
dnl AC_INIT does not have access to shell variables.
|
||||||
|
dnl Therefore, define RELEASEDATE as a macro.
|
||||||
|
-m4_define([RELEASEDATE], [Oct 2019])
|
||||||
|
+m4_define([RELEASEDATE], [Nov 2019])
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
71
0002-Allow-fig-2-text-ending-with-multiple-A-ticket-55.patch
Normal file
71
0002-Allow-fig-2-text-ending-with-multiple-A-ticket-55.patch
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
From 19db5fe6f77ebad91af4b4ef0defd61bd0bb358f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||||
|
Date: Wed, 4 Dec 2019 17:56:04 +0100
|
||||||
|
Subject: [PATCH 2/8] Allow fig 2 text ending with multiple ^A, ticket #55
|
||||||
|
|
||||||
|
---
|
||||||
|
CHANGES | 2 ++
|
||||||
|
fig2dev/read.c | 4 ++--
|
||||||
|
fig2dev/tests/read.at | 11 +++++++++++
|
||||||
|
3 files changed, 15 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGES b/CHANGES
|
||||||
|
index 2cdfda0..edd0843 100644
|
||||||
|
--- a/CHANGES
|
||||||
|
+++ b/CHANGES
|
||||||
|
@@ -5,6 +5,8 @@ Version 3.2
|
||||||
|
Patchlevel Xx (Xxx 20xx)
|
||||||
|
|
||||||
|
BUGS FIXED:
|
||||||
|
+ Ticket numbers refer to https://sourceforge.net/p/mcj/tickets/#.
|
||||||
|
+ o Allow Fig v2 text strings ending with multiple ^A. Ticket #55.
|
||||||
|
o Embed images in pdfs with their original compression type, i.e., leave
|
||||||
|
the gs switch "-dAutoFilterColorImages" at its default value "true".
|
||||||
|
|
||||||
|
diff --git a/fig2dev/read.c b/fig2dev/read.c
|
||||||
|
index af84531..09bd17d 100644
|
||||||
|
--- a/fig2dev/read.c
|
||||||
|
+++ b/fig2dev/read.c
|
||||||
|
@@ -3,7 +3,7 @@
|
||||||
|
* Copyright (c) 1991 by Micah Beck
|
||||||
|
* Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
* Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
- * Parts Copyright (c) 2015-2018 by Thomas Loimer
|
||||||
|
+ * Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
*
|
||||||
|
* Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -1328,7 +1328,7 @@ read_textobject(FILE *fp)
|
||||||
|
If we do not find the CONTROL-A on this line then this must
|
||||||
|
be a multi-line text object and we will have to read more. */
|
||||||
|
|
||||||
|
- n = sscanf(buf,"%*d%d%d%lf%d%d%d%lf%d%lf%lf%d%d%[^\1]%[\1]",
|
||||||
|
+ n = sscanf(buf,"%*d%d%d%lf%d%d%d%lf%d%lf%lf%d%d%[^\1]%1[\1]",
|
||||||
|
&t->type, &t->font, &t->size, &t->pen,
|
||||||
|
&t->color, &t->depth, &t->angle,
|
||||||
|
&t->flags, &t->height, &t->length,
|
||||||
|
diff --git a/fig2dev/tests/read.at b/fig2dev/tests/read.at
|
||||||
|
index a606de0..c36d07a 100644
|
||||||
|
--- a/fig2dev/tests/read.at
|
||||||
|
+++ b/fig2dev/tests/read.at
|
||||||
|
@@ -359,6 +359,17 @@ EOF
|
||||||
|
], 0, ignore)
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([allow text ending with multiple ^A, ticket #55])
|
||||||
|
+AT_KEYWORDS([read.c])
|
||||||
|
+AT_CHECK([fig2dev -L box <<EOF
|
||||||
|
+#FIG 2
|
||||||
|
+1200 2
|
||||||
|
+4 2 0 0 1 0 0 390 306 110 376 639 5 Text
|
||||||
|
+EOF
|
||||||
|
+], 1, ignore, [Invalid text object at line 2.
|
||||||
|
+])
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
AT_BANNER([Dynamically allocate picture file name.])
|
||||||
|
|
||||||
|
AT_SETUP([prepend fig file path to picture file name])
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
89
0003-Reject-huge-arrow-types-ticket-57.patch
Normal file
89
0003-Reject-huge-arrow-types-ticket-57.patch
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
From 3065abc7b4f740ed6532322843531317de782a26 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||||
|
Date: Tue, 10 Dec 2019 13:17:36 +0100
|
||||||
|
Subject: [PATCH 3/8] Reject huge arrow types, ticket #57
|
||||||
|
|
||||||
|
An arrow type being large enough would pass the test for
|
||||||
|
a valid type by integer overflow.
|
||||||
|
---
|
||||||
|
CHANGES | 1 +
|
||||||
|
fig2dev/arrow.c | 13 ++++++++-----
|
||||||
|
fig2dev/tests/read.at | 12 ++++++++++++
|
||||||
|
3 files changed, 21 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGES b/CHANGES
|
||||||
|
index edd0843..964dc84 100644
|
||||||
|
--- a/CHANGES
|
||||||
|
+++ b/CHANGES
|
||||||
|
@@ -6,6 +6,7 @@ Patchlevel Xx (Xxx 20xx)
|
||||||
|
|
||||||
|
BUGS FIXED:
|
||||||
|
Ticket numbers refer to https://sourceforge.net/p/mcj/tickets/#.
|
||||||
|
+ o Reject huge arrow types causing integer overflow. Ticket #57.
|
||||||
|
o Allow Fig v2 text strings ending with multiple ^A. Ticket #55.
|
||||||
|
o Embed images in pdfs with their original compression type, i.e., leave
|
||||||
|
the gs switch "-dAutoFilterColorImages" at its default value "true".
|
||||||
|
diff --git a/fig2dev/arrow.c b/fig2dev/arrow.c
|
||||||
|
index a8e7fd0..34bcf18 100644
|
||||||
|
--- a/fig2dev/arrow.c
|
||||||
|
+++ b/fig2dev/arrow.c
|
||||||
|
@@ -1,9 +1,10 @@
|
||||||
|
/*
|
||||||
|
* Fig2dev: Translate Fig code to various Devices
|
||||||
|
- * Copyright (c) 1985 by Supoj Sutantavibul
|
||||||
|
* Copyright (c) 1991 by Micah Beck
|
||||||
|
- * Parts Copyright (c) 1989-2002 by Brian V. Smith
|
||||||
|
- * Parts Copyright (c) 2015-2018 by Thomas Loimer
|
||||||
|
+ * Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
+ * Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
+ * Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
+ *
|
||||||
|
*
|
||||||
|
* Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -78,7 +79,9 @@ make_arrow(int type, int style, double thickness, double wid, double ht)
|
||||||
|
{
|
||||||
|
F_arrow *a;
|
||||||
|
|
||||||
|
- if (style < 0 || style > 1 || type < 0 || (type + 1) * 2 > NUMARROWS)
|
||||||
|
+ if (style < 0 || style > 1 || type < 0 ||
|
||||||
|
+ /* beware of int overflow */
|
||||||
|
+ type > NUMARROWS || (type + 1) * 2 > NUMARROWS)
|
||||||
|
return NULL;
|
||||||
|
if (NULL == (Arrow_malloc(a))) {
|
||||||
|
put_msg(Err_mem);
|
||||||
|
@@ -90,7 +93,7 @@ make_arrow(int type, int style, double thickness, double wid, double ht)
|
||||||
|
|
||||||
|
a->type = type;
|
||||||
|
a->style = style;
|
||||||
|
- a->thickness = thickness*THICK_SCALE;
|
||||||
|
+ a->thickness = thickness * THICK_SCALE;
|
||||||
|
a->wid = wid;
|
||||||
|
a->ht = ht;
|
||||||
|
return a;
|
||||||
|
diff --git a/fig2dev/tests/read.at b/fig2dev/tests/read.at
|
||||||
|
index c36d07a..e9a71a3 100644
|
||||||
|
--- a/fig2dev/tests/read.at
|
||||||
|
+++ b/fig2dev/tests/read.at
|
||||||
|
@@ -135,6 +135,18 @@ A single point with a backward arrow - remove the arrow.
|
||||||
|
])
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([reject huge arrow-type, ticket #57])
|
||||||
|
+AT_KEYWORDS(arrow.c arrow)
|
||||||
|
+AT_CHECK([fig2dev -L box <<EOF
|
||||||
|
+FIG_FILE_TOP
|
||||||
|
+2 1 0 1 -1 -1 50 -1 -1 0. 0 0 0 1 0 2
|
||||||
|
+ 10000000000000 0 1 60 120
|
||||||
|
+0 0 600 0
|
||||||
|
+EOF
|
||||||
|
+], 1, ignore, [Invalid forward arrow at line 11.
|
||||||
|
+])
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
AT_SETUP([reject negative font type])
|
||||||
|
AT_KEYWORDS(read.c font)
|
||||||
|
AT_CHECK([fig2dev -L box <<EOF
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
85
0004-Convert-polygons-with-too-few-points-to-polylines.patch
Normal file
85
0004-Convert-polygons-with-too-few-points-to-polylines.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
From c379fe50574e5b5dd6e17f15d8473c5713d1b823 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||||
|
Date: Wed, 11 Dec 2019 21:36:46 +0100
|
||||||
|
Subject: [PATCH 4/8] Convert polygons with too few points to polylines
|
||||||
|
|
||||||
|
As a side effect, this also fixes ticket #56.
|
||||||
|
---
|
||||||
|
CHANGES | 1 +
|
||||||
|
fig2dev/read.c | 16 ++++++++++++++++
|
||||||
|
fig2dev/tests/read.at | 11 +++++++++++
|
||||||
|
3 files changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/CHANGES b/CHANGES
|
||||||
|
index 964dc84..b2f7006 100644
|
||||||
|
--- a/CHANGES
|
||||||
|
+++ b/CHANGES
|
||||||
|
@@ -6,6 +6,7 @@ Patchlevel Xx (Xxx 20xx)
|
||||||
|
|
||||||
|
BUGS FIXED:
|
||||||
|
Ticket numbers refer to https://sourceforge.net/p/mcj/tickets/#.
|
||||||
|
+ o Convert polygons having too few points to polylines. Ticket #56.
|
||||||
|
o Reject huge arrow types causing integer overflow. Ticket #57.
|
||||||
|
o Allow Fig v2 text strings ending with multiple ^A. Ticket #55.
|
||||||
|
o Embed images in pdfs with their original compression type, i.e., leave
|
||||||
|
diff --git a/fig2dev/read.c b/fig2dev/read.c
|
||||||
|
index 09bd17d..9500091 100644
|
||||||
|
--- a/fig2dev/read.c
|
||||||
|
+++ b/fig2dev/read.c
|
||||||
|
@@ -793,8 +793,10 @@ read_ellipseobject(void)
|
||||||
|
/*
|
||||||
|
* Sanitize line objects. Return 0 on success, -1 otherwise.
|
||||||
|
* On error, call free_linestorage(l) after sanitize_lineobject().
|
||||||
|
+ *
|
||||||
|
* polylines: remove fill, if less than 3 points
|
||||||
|
* remove arrows, if only one point
|
||||||
|
+ * polygons: convert to polyline if less than 3 unique points
|
||||||
|
* rectangles, polygons: last point must coincide with first point
|
||||||
|
* rectangle: convert to polygon, if not 5 points
|
||||||
|
* rectangle with rounded corners: error, if not 5 points
|
||||||
|
@@ -854,6 +856,20 @@ sanitize_lineobject(
|
||||||
|
q->y = l->points->y;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (l->type == T_POLYGON) {
|
||||||
|
+ int npts;
|
||||||
|
+
|
||||||
|
+ q = l->points;
|
||||||
|
+ for (npts = 1; q->next && npts < 4; q = q->next)
|
||||||
|
+ ++npts;
|
||||||
|
+ if (npts < 4 ) {
|
||||||
|
+ put_msg("A polygon with %d points at line %d - convert to a polyline.",
|
||||||
|
+ npts, line_no);
|
||||||
|
+ l->type = T_POLYLINE;
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (l->type == T_BOX || l->type == T_ARC_BOX || l->type == T_PIC_BOX) {
|
||||||
|
int npts = 1;
|
||||||
|
for (q = l->points; q->next; q = q->next)
|
||||||
|
diff --git a/fig2dev/tests/read.at b/fig2dev/tests/read.at
|
||||||
|
index e9a71a3..4ef8747 100644
|
||||||
|
--- a/fig2dev/tests/read.at
|
||||||
|
+++ b/fig2dev/tests/read.at
|
||||||
|
@@ -147,6 +147,17 @@ EOF
|
||||||
|
])
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([convert short polygon to polyline, ticket #56])
|
||||||
|
+AT_KEYWORDS(read.c polygon)
|
||||||
|
+AT_CHECK([fig2dev -L ptk <<EOF
|
||||||
|
+FIG_FILE_TOP
|
||||||
|
+2 3 0 1 -1 -1 50 -1 -1 0.0 0 0 -1 0 0 1
|
||||||
|
+ 0 0
|
||||||
|
+EOF
|
||||||
|
+], 0, ignore, [A polygon with 1 points at line 11 - convert to a polyline.
|
||||||
|
+])
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
AT_SETUP([reject negative font type])
|
||||||
|
AT_KEYWORDS(read.c font)
|
||||||
|
AT_CHECK([fig2dev -L box <<EOF
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
324
0005-Correctly-scan-embedded-pdfs-for-MediaBox-value.patch
Normal file
324
0005-Correctly-scan-embedded-pdfs-for-MediaBox-value.patch
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
From f116dfdff70c6a289a86e93f6b2fe64a54198534 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||||
|
Date: Sat, 14 Dec 2019 23:10:04 +0100
|
||||||
|
Subject: [PATCH 5/8] Correctly scan embedded pdfs for /MediaBox value
|
||||||
|
|
||||||
|
This applies two patches from the opensuse source rpm,
|
||||||
|
https://download.opensuse.org/repositories/openSUSE:/Factory/standard/src/xfig-3.2.7b-1.1.src.rpm
|
||||||
|
transfig.3.2.5-binderman.dif and transfig.3.2.5d-mediaboxrealnb.dif.
|
||||||
|
---
|
||||||
|
CHANGES | 1 +
|
||||||
|
fig2dev/dev/readeps.c | 31 ++++++++------
|
||||||
|
fig2dev/tests/Makefile.am | 15 ++++---
|
||||||
|
fig2dev/tests/bitmaps.at | 5 +++
|
||||||
|
fig2dev/tests/data/cross.pdf | 62 +++++++++++++++++++++++++++
|
||||||
|
fig2dev/tests/test2.c | 82 ++++++++++++++++++++++++++++++++++++
|
||||||
|
transfig/sys.c | 3 ++
|
||||||
|
7 files changed, 182 insertions(+), 17 deletions(-)
|
||||||
|
create mode 100644 fig2dev/tests/data/cross.pdf
|
||||||
|
create mode 100644 fig2dev/tests/test2.c
|
||||||
|
|
||||||
|
diff --git a/CHANGES b/CHANGES
|
||||||
|
index b2f7006..4a414fa 100644
|
||||||
|
--- a/CHANGES
|
||||||
|
+++ b/CHANGES
|
||||||
|
@@ -6,6 +6,7 @@ Patchlevel Xx (Xxx 20xx)
|
||||||
|
|
||||||
|
BUGS FIXED:
|
||||||
|
Ticket numbers refer to https://sourceforge.net/p/mcj/tickets/#.
|
||||||
|
+ o Correctly scan embedded pdfs for /MediaBox value.
|
||||||
|
o Convert polygons having too few points to polylines. Ticket #56.
|
||||||
|
o Reject huge arrow types causing integer overflow. Ticket #57.
|
||||||
|
o Allow Fig v2 text strings ending with multiple ^A. Ticket #55.
|
||||||
|
diff --git a/fig2dev/dev/readeps.c b/fig2dev/dev/readeps.c
|
||||||
|
index ec25504..502f4bb 100644
|
||||||
|
--- a/fig2dev/dev/readeps.c
|
||||||
|
+++ b/fig2dev/dev/readeps.c
|
||||||
|
@@ -1,7 +1,9 @@
|
||||||
|
/*
|
||||||
|
* Fig2dev: Translate Fig code to various Devices
|
||||||
|
- * Parts Copyright (c) 1989-2007 by Brian V. Smith
|
||||||
|
- * Parts Copyright (c) 2015-2017 by Thomas Loimer
|
||||||
|
+ * Copyright (c) 1991 by Micah Beck
|
||||||
|
+ * Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
+ * Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
+ * Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
*
|
||||||
|
* Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -83,18 +85,23 @@ read_eps_pdf(FILE *file, int filetype, F_pic *pic, int *llx, int* lly,
|
||||||
|
while (fgets(buf, BUFSIZ, file) != NULL) {
|
||||||
|
/* look for /MediaBox for pdf file */
|
||||||
|
if (pdf_flag) {
|
||||||
|
- if (!strncmp(buf, "/MediaBox", 9)) { /* look for the MediaBox spec */
|
||||||
|
- c = strchr(buf, '[') + 1;
|
||||||
|
- if (c && sscanf(c, "%d %d %d %d", llx, lly, &urx, &ury) < 4)
|
||||||
|
- {
|
||||||
|
- *llx = *lly = 0;
|
||||||
|
- urx = paperdef[0].width*72;
|
||||||
|
- ury = paperdef[0].height*72;
|
||||||
|
- put_msg("Bad MediaBox in imported PDF file %s, assuming %s size",
|
||||||
|
- pic->file, metric? "A4" : "Letter" );
|
||||||
|
+ for (c = buf; (c = strchr(c,'/')); ++c) {
|
||||||
|
+ if (!strncmp(c, "/MediaBox", 9)) {
|
||||||
|
+ c = strchr(c, '[');
|
||||||
|
+ if (c && sscanf(c + 1, "%d %d %d %d",
|
||||||
|
+ llx, lly, &urx, &ury) < 4) {
|
||||||
|
+ *llx = *lly = 0;
|
||||||
|
+ urx = paperdef[0].width*72;
|
||||||
|
+ ury = paperdef[0].height*72;
|
||||||
|
+ put_msg("Bad MediaBox in imported PDF file %s, assuming %s size",
|
||||||
|
+ pic->file, metric? "A4" : "Letter" );
|
||||||
|
+ }
|
||||||
|
+ pic->bit_size.x = urx - (*llx);
|
||||||
|
+ pic->bit_size.y = ury - (*lly);
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- /* look for bounding box for EPS file */
|
||||||
|
+ /* look for bounding box for EPS file */
|
||||||
|
} else if (!nested && !strncmp(buf, "%%BoundingBox:", 14)) {
|
||||||
|
c = buf + 14;
|
||||||
|
/* skip past white space */
|
||||||
|
diff --git a/fig2dev/tests/Makefile.am b/fig2dev/tests/Makefile.am
|
||||||
|
index 4b83e0b..389f984 100644
|
||||||
|
--- a/fig2dev/tests/Makefile.am
|
||||||
|
+++ b/fig2dev/tests/Makefile.am
|
||||||
|
@@ -4,7 +4,7 @@
|
||||||
|
# Copyright (c) 1991 by Micah Beck
|
||||||
|
# Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
# Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
-# Parts Copyright (c) 2015-2018 by Thomas Loimer
|
||||||
|
+# Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
#
|
||||||
|
# Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
# full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -16,7 +16,7 @@
|
||||||
|
# and this permission notice remain intact.
|
||||||
|
|
||||||
|
# fig2dev/tests/Makefile.am
|
||||||
|
-# Author: Thomas Loimer, 2016-2018.
|
||||||
|
+# Author: Thomas Loimer, 2016-2019.
|
||||||
|
|
||||||
|
|
||||||
|
# testsuite and package.m4 must be distributed, hence they are
|
||||||
|
@@ -39,8 +39,8 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac
|
||||||
|
echo 'm4_define([AT_PACKAGE_URL], [@PACKAGE_URL@])'; \
|
||||||
|
} >'$(srcdir)/package.m4'
|
||||||
|
|
||||||
|
-check_PROGRAMS = test1
|
||||||
|
-# test1 calls malloc(). AC_FUNC_MALLOC may replace malloc() by rpl_malloc()
|
||||||
|
+check_PROGRAMS = test1 test2
|
||||||
|
+# test1 called malloc(). AC_FUNC_MALLOC may replace malloc() by rpl_malloc()
|
||||||
|
# which is defined in malloc.o. The latter is contained in $(LIBOBJS) in
|
||||||
|
# ${LIBOBJDIR}. Specifically, ./configure CFLAGS="-fsanitize=address" causes
|
||||||
|
# this replacment. Unfortunately, using test1_LDADD, causes make distcheck to
|
||||||
|
@@ -54,9 +54,14 @@ check_PROGRAMS = test1
|
||||||
|
|
||||||
|
# keep the definitions below in sync with those in ../dev/Makefile.am
|
||||||
|
if ENABLE_I18N
|
||||||
|
-AM_CPPFLAGS = -DI18N_DATADIR="\"$(i18ndir)\""
|
||||||
|
+test1_CPPFLAGS = -DI18N_DATADIR="\"$(i18ndir)\""
|
||||||
|
endif
|
||||||
|
|
||||||
|
+test2_CPPFLAGS = -I$(top_srcdir)/fig2dev
|
||||||
|
+test2_LDADD = $(top_builddir)/fig2dev/dev/readeps.$(OBJEXT)
|
||||||
|
+test2_DEPENDENCIES = $(test2_LDADD)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
check-local: atconfig $(TESTSUITE) atlocal
|
||||||
|
$(SHELL) '$(TESTSUITE)' INSTALLCHECK=no $(TESTSUITEFLAGS)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/tests/bitmaps.at b/fig2dev/tests/bitmaps.at
|
||||||
|
index 91d5b54..1fea0f8 100644
|
||||||
|
--- a/fig2dev/tests/bitmaps.at
|
||||||
|
+++ b/fig2dev/tests/bitmaps.at
|
||||||
|
@@ -235,3 +235,8 @@ EOF`
|
||||||
|
# 1433 on ubuntu 16.04.2 with ghostscript 9.18
|
||||||
|
AT_CHECK([test $blackpixels -gt 1431 && test $blackpixels -lt 1494])
|
||||||
|
AT_CLEANUP
|
||||||
|
+
|
||||||
|
+AT_SETUP([find /MediaBox in pdf file])
|
||||||
|
+AT_KEYWORDS(pdf)
|
||||||
|
+AT_CHECK(["$abs_builddir"/test2 "$srcdir/data/cross.pdf"], 0, ignore)
|
||||||
|
+AT_CLEANUP
|
||||||
|
diff --git a/fig2dev/tests/data/cross.pdf b/fig2dev/tests/data/cross.pdf
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..e1e7e4d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/fig2dev/tests/data/cross.pdf
|
||||||
|
@@ -0,0 +1,62 @@
|
||||||
|
+%PDF-1.4
|
||||||
|
+5 0 obj
|
||||||
|
+<</Length 6 0 R/Filter /FlateDecode>>
|
||||||
|
+stream
|
||||||
|
+xœMŠ±
€0{Oñ'Qüxj`
|
||||||
|
+R
|
||||||
|
+Ö$„Ð'<27>n‡i‚=¼^št±B
ZÂ)†AÜÔ„×Ð’{4ñLõDDÖæؾçWÞ§°j_ã.³Œrdô?endstream
|
||||||
|
+endobj
|
||||||
|
+6 0 obj
|
||||||
|
+91
|
||||||
|
+endobj
|
||||||
|
+4 0 obj
|
||||||
|
+<</Type/Page/MediaBox [0 0 72 72]
|
||||||
|
+/Parent 3 0 R
|
||||||
|
+/Resources<</ProcSet[/PDF]
|
||||||
|
+/ExtGState 8 0 R
|
||||||
|
+>>
|
||||||
|
+/Contents 5 0 R
|
||||||
|
+>>
|
||||||
|
+endobj
|
||||||
|
+3 0 obj
|
||||||
|
+<< /Type /Pages /Kids [
|
||||||
|
+4 0 R
|
||||||
|
+] /Count 1
|
||||||
|
+>>
|
||||||
|
+endobj
|
||||||
|
+1 0 obj
|
||||||
|
+<</Type /Catalog /Pages 3 0 R
|
||||||
|
+>>
|
||||||
|
+endobj
|
||||||
|
+7 0 obj
|
||||||
|
+<</Type/ExtGState
|
||||||
|
+/BM/Normal
|
||||||
|
+/OPM 1
|
||||||
|
+/TK true>>endobj
|
||||||
|
+8 0 obj
|
||||||
|
+<</R7
|
||||||
|
+7 0 R>>
|
||||||
|
+endobj
|
||||||
|
+2 0 obj
|
||||||
|
+<</Producer(GPL Ghostscript 9.27)
|
||||||
|
+/CreationDate(D:20191110165654+01'00')
|
||||||
|
+/ModDate(D:20191110165654+01'00')
|
||||||
|
+/Creator( XeTeX 2019.11.10:1656)>>endobj
|
||||||
|
+xref
|
||||||
|
+0 9
|
||||||
|
+0000000000 65535 f
|
||||||
|
+0000000376 00000 n
|
||||||
|
+0000000514 00000 n
|
||||||
|
+0000000317 00000 n
|
||||||
|
+0000000188 00000 n
|
||||||
|
+0000000009 00000 n
|
||||||
|
+0000000170 00000 n
|
||||||
|
+0000000424 00000 n
|
||||||
|
+0000000485 00000 n
|
||||||
|
+trailer
|
||||||
|
+<< /Size 10 /Root 1 0 R /Info 2 0 R
|
||||||
|
+/ID [<EAB28CF54E276D36634D7BBB3C4603B7><EAB28CF54E276D36634D7BBB3C4603B7>]
|
||||||
|
+>>
|
||||||
|
+startxref
|
||||||
|
+670
|
||||||
|
+%%EOF
|
||||||
|
diff --git a/fig2dev/tests/test2.c b/fig2dev/tests/test2.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..04e92d7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/fig2dev/tests/test2.c
|
||||||
|
@@ -0,0 +1,82 @@
|
||||||
|
+/*
|
||||||
|
+ * Fig2dev: Translate Fig code to various Devices
|
||||||
|
+ * Copyright (c) 1991 by Micah Beck
|
||||||
|
+ * Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
+ * Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
+ * Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
+ *
|
||||||
|
+ * Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
+ * full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
+ * nonexclusive right and license to deal in this software and documentation
|
||||||
|
+ * files (the "Software"), including without limitation the rights to use,
|
||||||
|
+ * copy, modify, merge, publish, distribute, sublicense and/or sell copies
|
||||||
|
+ * of the Software, and to permit persons who receive copies from any such
|
||||||
|
+ * party to do so, with the only requirement being that the above copyright
|
||||||
|
+ * and this permission notice remain intact.
|
||||||
|
+ *
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
+ * test2.c: Check, whether read_pdf() finds the bounding box of a pdf file.
|
||||||
|
+ * Author: Thomas Loimer, 2019-12-14
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_CONFIG_H
|
||||||
|
+#include "config.h"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <stdlib.h>
|
||||||
|
+
|
||||||
|
+#include "bool.h"
|
||||||
|
+#include "object.h"
|
||||||
|
+
|
||||||
|
+/* the function to be tested, in $(top_srcdir)/fig2dev/dev/readeps.c */
|
||||||
|
+extern int read_pdf(FILE *file, int type, F_pic *pic, int *llx, int *lly);
|
||||||
|
+
|
||||||
|
+/* symbols that are needed when calling read_pdf() */
|
||||||
|
+int urx = 0;
|
||||||
|
+int ury = 0;
|
||||||
|
+int metric = 0;
|
||||||
|
+FILE *tfp;
|
||||||
|
+const struct _paperdef /* from fig2dev.h */
|
||||||
|
+{
|
||||||
|
+ char *name;
|
||||||
|
+ int width;
|
||||||
|
+ int height;
|
||||||
|
+} paperdef[1] = {{"letter", 8, 12}};
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+void put_msg(const char *fmt, const char *file, const char *size)
|
||||||
|
+{
|
||||||
|
+ fprintf(stderr, fmt, file, size);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+main(int argc, char *argv[])
|
||||||
|
+{
|
||||||
|
+ (void) argc;
|
||||||
|
+ int llx = -1;
|
||||||
|
+ int lly = -1;
|
||||||
|
+ FILE *file;
|
||||||
|
+ F_pic pic;
|
||||||
|
+
|
||||||
|
+ tfp = stdout;
|
||||||
|
+ pic.file = argv[1];
|
||||||
|
+
|
||||||
|
+ file = fopen(argv[1], "rb");
|
||||||
|
+ if (file == NULL) {
|
||||||
|
+ fprintf(stderr, "Test file %s not found.\n", argv[1]);
|
||||||
|
+ exit(EXIT_FAILURE);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (read_pdf(file, 0, &pic, &llx, &lly) == 1 &&
|
||||||
|
+ pic.bit_size.x != 10 && pic.bit_size.y != 10) {
|
||||||
|
+ fprintf(stdout, "read_pdf found: width = %d, height = %d\n",
|
||||||
|
+ pic.bit_size.x, pic.bit_size.y);
|
||||||
|
+ exit(EXIT_SUCCESS);
|
||||||
|
+ } else {
|
||||||
|
+ exit(EXIT_FAILURE);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/transfig/sys.c b/transfig/sys.c
|
||||||
|
index c070ee6..30e8d3d 100644
|
||||||
|
--- a/transfig/sys.c
|
||||||
|
+++ b/transfig/sys.c
|
||||||
|
@@ -2,6 +2,8 @@
|
||||||
|
* TransFig: Facility for Translating Fig code
|
||||||
|
* Copyright (c) 1991 by Micah Beck
|
||||||
|
* Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
+ * Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
+ * Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
*
|
||||||
|
* Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -39,6 +41,7 @@ sysls(void)
|
||||||
|
i += 1;
|
||||||
|
c = fgetc(ls);
|
||||||
|
}
|
||||||
|
+ pclose(ls);
|
||||||
|
sysbuf[i] = '\0';
|
||||||
|
return sysbuf;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
30
0006-fig2dev-version-prints-version-information.patch
Normal file
30
0006-fig2dev-version-prints-version-information.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From 560e633910a28f81b6607cf81e53026ac96034bf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||||
|
Date: Sun, 15 Dec 2019 21:32:18 +0100
|
||||||
|
Subject: [PATCH 6/8] "fig2dev --version" prints version information
|
||||||
|
|
||||||
|
---
|
||||||
|
fig2dev/fig2dev.c | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/fig2dev.c b/fig2dev/fig2dev.c
|
||||||
|
index 0866a71..479b484 100644
|
||||||
|
--- a/fig2dev/fig2dev.c
|
||||||
|
+++ b/fig2dev/fig2dev.c
|
||||||
|
@@ -218,6 +218,13 @@ get_args(int argc, char *argv[])
|
||||||
|
|
||||||
|
if (argc == 1)
|
||||||
|
fprintf(stderr, Usage, prog, prog);
|
||||||
|
+
|
||||||
|
+ /* print the version, for the comfort of the autotest tests */
|
||||||
|
+ if (!strcmp(argv[1], "--version")) {
|
||||||
|
+ printf("fig2dev Version %s\n", PACKAGE_VERSION);
|
||||||
|
+ exit(EXIT_SUCCESS);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* sum of all arguments */
|
||||||
|
while ((c = fig_getopt(argc, argv, ARGSTRING)) != EOF) {
|
||||||
|
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
173
0007-Use-getopt-from-standard-libraries-if-available.patch
Normal file
173
0007-Use-getopt-from-standard-libraries-if-available.patch
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
From 93795dd396730c80e63767dede7777f4cb7dc383 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||||
|
Date: Sun, 15 Dec 2019 21:34:34 +0100
|
||||||
|
Subject: [PATCH 7/8] Use getopt() from standard libraries, if available
|
||||||
|
|
||||||
|
---
|
||||||
|
configure.ac | 10 +++++-----
|
||||||
|
fig2dev/Makefile.am | 2 +-
|
||||||
|
fig2dev/Nmakefile | 6 +++---
|
||||||
|
fig2dev/fig2dev.c | 12 +++++++-----
|
||||||
|
fig2dev/{ => lib}/getopt.c | 12 +++---------
|
||||||
|
5 files changed, 19 insertions(+), 23 deletions(-)
|
||||||
|
rename fig2dev/{ => lib}/getopt.c (91%)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index e88b27a..8e955ee 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -5,7 +5,7 @@ AC_COPYRIGHT([Fig2dev: Translate Fig code to various Devices
|
||||||
|
Copyright (c) 1991 by Micah Beck
|
||||||
|
Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
-Parts Copyright (c) 2015-2018 by Thomas Loimer
|
||||||
|
+Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
|
||||||
|
Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -19,7 +19,7 @@ and this permission notice remain intact.
|
||||||
|
|
||||||
|
#
|
||||||
|
# configure.ac
|
||||||
|
-# Author: Thomas Loimer, 2015-2018.
|
||||||
|
+# Author: Thomas Loimer, 2015-2019.
|
||||||
|
#
|
||||||
|
|
||||||
|
dnl Define m4 variables for use in AC_INIT and AC_DEFINE below.
|
||||||
|
@@ -366,9 +366,9 @@ AS_IF([test "$tl_cv_func__setmode" = yes],
|
||||||
|
|
||||||
|
# Check for functions and, if not found, use the corresponding
|
||||||
|
# replacement, e.g., strstr.c, in the top srcdir. Sets, e.g.,
|
||||||
|
-# HAVE_STRSTR. Any modern system should have these functions, so
|
||||||
|
-# this are obsolete checks.
|
||||||
|
-AC_REPLACE_FUNCS([isascii strstr strchr strrchr strcasecmp strncasecmp \
|
||||||
|
+# HAVE_STRSTR. Except possibly getopt(), any modern system should have these
|
||||||
|
+# functions, so all except one are obsolete checks.
|
||||||
|
+AC_REPLACE_FUNCS([getopt isascii strstr strchr strrchr strcasecmp strncasecmp \
|
||||||
|
strdup strndup])
|
||||||
|
|
||||||
|
# Place the replacement functions into this dir.
|
||||||
|
diff --git a/fig2dev/Makefile.am b/fig2dev/Makefile.am
|
||||||
|
index d00ac54..70ae569 100644
|
||||||
|
--- a/fig2dev/Makefile.am
|
||||||
|
+++ b/fig2dev/Makefile.am
|
||||||
|
@@ -39,7 +39,7 @@ bin_PROGRAMS = fig2dev
|
||||||
|
fig2dev_SOURCES = alloc.h arrow.c bool.h bound.h bound.c colors.h colors.c \
|
||||||
|
creationdate.h creationdate.c drivers.h fig2dev.h fig2dev.c free.h free.c \
|
||||||
|
iso2tex.c localmath.h localmath.c object.h read1_3.c read.h read.c \
|
||||||
|
- trans_spline.h trans_spline.c pi.h getopt.c
|
||||||
|
+ trans_spline.h trans_spline.c pi.h
|
||||||
|
|
||||||
|
# CONFIG_HEADER is config.h, which contains PACKAGE_VERSION. If that
|
||||||
|
# changes, fig2dev should take up the new version string.
|
||||||
|
diff --git a/fig2dev/Nmakefile b/fig2dev/Nmakefile
|
||||||
|
index 7623e40..bba38c9 100644
|
||||||
|
--- a/fig2dev/Nmakefile
|
||||||
|
+++ b/fig2dev/Nmakefile
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
# Copyright (c) 1991 by Micah Beck
|
||||||
|
# Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
# Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
-# Parts Copyright (c) 2015-2018 by Thomas Loimer
|
||||||
|
+# Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
#
|
||||||
|
# Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
# full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -14,7 +14,7 @@
|
||||||
|
# and this permission notice remain intact.
|
||||||
|
|
||||||
|
# fig2dev/Nmakefile
|
||||||
|
-# Author: Thomas Loimer, 2018.
|
||||||
|
+# Author: Thomas Loimer, 2018, 2019.
|
||||||
|
|
||||||
|
#############################################################
|
||||||
|
#
|
||||||
|
@@ -84,7 +84,7 @@ CFLAGS = /I. /Idev /nologo /W1 /DWIN32 /D_BIND_TO_CURRENT_VCLIBS_VERSION=1 \
|
||||||
|
REPL_LIBS = lib/strndup.c
|
||||||
|
|
||||||
|
FIG2DEV_SRCS = arrow.c bound.c colors.c creationdate.c fig2dev.c free.c \
|
||||||
|
- getopt.c iso2tex.c localmath.c read.c read1_3.c trans_spline.c \
|
||||||
|
+ iso2tex.c localmath.c read.c read1_3.c trans_spline.c \
|
||||||
|
dev/asc85ec.c dev/genbitmaps.c dev/genbox.c dev/gencgm.c dev/gendxf.c \
|
||||||
|
dev/genemf.c dev/genepic.c dev/gengbx.c dev/genge.c dev/genibmgl.c \
|
||||||
|
dev/genlatex.c dev/genmap.c dev/genmf.c dev/genmp.c dev/genpdf.c \
|
||||||
|
diff --git a/fig2dev/fig2dev.c b/fig2dev/fig2dev.c
|
||||||
|
index 479b484..d8c5e2a 100644
|
||||||
|
--- a/fig2dev/fig2dev.c
|
||||||
|
+++ b/fig2dev/fig2dev.c
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
#include <locale.h>
|
||||||
|
/* In Windows, _setmode() is declared in <io.h>, O_BINARY in <fcntl.h>. It
|
||||||
|
* accepts two arguments and sets file mode to text or binary. */
|
||||||
|
@@ -44,10 +45,11 @@
|
||||||
|
#include "bound.h"
|
||||||
|
#include "read.h"
|
||||||
|
|
||||||
|
-/* the three lines below could go into a getopt.h file */
|
||||||
|
-extern int fig_getopt(int nargc, char **nargv, char *ostr); /* getopt.c */
|
||||||
|
-extern char *optarg; /* getopt.c */
|
||||||
|
-extern int optind; /* getopt.c */
|
||||||
|
+#ifndef HAVE_GETOPT
|
||||||
|
+extern int getopt(int argc, char *argv[], const char *ostr);
|
||||||
|
+extern char *optarg;
|
||||||
|
+extern int optind;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
char Err_badarg[] = "Argument -%c unknown to %s driver.";
|
||||||
|
char Err_mem[] = "Running out of memory.";
|
||||||
|
@@ -226,7 +228,7 @@ get_args(int argc, char *argv[])
|
||||||
|
}
|
||||||
|
|
||||||
|
/* sum of all arguments */
|
||||||
|
- while ((c = fig_getopt(argc, argv, ARGSTRING)) != EOF) {
|
||||||
|
+ while ((c = getopt(argc, argv, ARGSTRING)) != EOF) {
|
||||||
|
|
||||||
|
/* global (all drivers) option handling */
|
||||||
|
switch (c) {
|
||||||
|
diff --git a/fig2dev/getopt.c b/fig2dev/lib/getopt.c
|
||||||
|
similarity index 91%
|
||||||
|
rename from fig2dev/getopt.c
|
||||||
|
rename to fig2dev/lib/getopt.c
|
||||||
|
index 867a9fe..f3d1845 100644
|
||||||
|
--- a/fig2dev/getopt.c
|
||||||
|
+++ b/fig2dev/lib/getopt.c
|
||||||
|
@@ -2,8 +2,8 @@
|
||||||
|
* Fig2dev: Translate Fig code to various Devices
|
||||||
|
* Copyright (c) 1991 by Micah Beck
|
||||||
|
* Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
- * Parts Copyright (c) 1989-2007 by Brian V. Smith
|
||||||
|
- * Parts Copyright (c) 2015-2017 by Thomas Loimer
|
||||||
|
+ * Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
+ * Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
*
|
||||||
|
* Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -37,12 +37,6 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
-/*
|
||||||
|
-#ifndef lint
|
||||||
|
-static char sccsfid[] = "@(#) getopt.c 5.0 (UTZoo) 1985";
|
||||||
|
-#endif
|
||||||
|
-*/
|
||||||
|
-
|
||||||
|
#define ARGCH (int)':'
|
||||||
|
#define BADCH (int)'?'
|
||||||
|
#define EMSG ""
|
||||||
|
@@ -59,7 +53,7 @@ char *optarg; /* argument associated with option */
|
||||||
|
fputc(optc,stderr); fputc('\n',stderr); return BADCH
|
||||||
|
|
||||||
|
int
|
||||||
|
-fig_getopt(int nargc, char **nargv, char *ostr)
|
||||||
|
+getopt(int nargc, char **nargv, const char *ostr)
|
||||||
|
{
|
||||||
|
static char *place = EMSG; /* option letter processing */
|
||||||
|
char *oli; /* option letter list index */
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
1857
0008-Replace-most-calls-to-fgets-by-getline-in-read.c.patch
Normal file
1857
0008-Replace-most-calls-to-fgets-by-getline-in-read.c.patch
Normal file
File diff suppressed because it is too large
Load Diff
109
0009-CVE-2020-21681-CVE-2020-21682.patch
Normal file
109
0009-CVE-2020-21681-CVE-2020-21682.patch
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
Subject: [PATCH] Allow DEFAULT color in cgm and ge output and fix memory leak
|
||||||
|
in gencgm.c
|
||||||
|
|
||||||
|
---
|
||||||
|
fig2dev/dev/gencgm.c | 8 +++++++-
|
||||||
|
fig2dev/dev/genge.c | 7 ++++---
|
||||||
|
fig2dev/tests/data/line.fig | 2 +-
|
||||||
|
fig2dev/tests/output.at | 10 ++++++++++
|
||||||
|
4 files changed, 22 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/dev/gencgm.c b/fig2dev/dev/gencgm.c
|
||||||
|
index 6d9d9cb..0033c36 100644
|
||||||
|
--- a/fig2dev/dev/gencgm.c
|
||||||
|
+++ b/fig2dev/dev/gencgm.c
|
||||||
|
@@ -148,9 +148,11 @@ gencgm_start(F_compound *objects)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char *p, *figname;
|
||||||
|
+ char *figname_buf = NULL;
|
||||||
|
|
||||||
|
if (from) {
|
||||||
|
- figname = strdup(from);
|
||||||
|
+ figname_buf = strdup(from);
|
||||||
|
+ figname = figname_buf;
|
||||||
|
p = strrchr(figname, '/');
|
||||||
|
if (p)
|
||||||
|
figname = p+1; /* remove path from name for comment in file */
|
||||||
|
@@ -252,6 +254,8 @@ gencgm_start(F_compound *objects)
|
||||||
|
print_comments("% ",objects->comments, " %");
|
||||||
|
fprintf(tfp,"%% %%\n");
|
||||||
|
}
|
||||||
|
+ if (figname_buf)
|
||||||
|
+ free(figname_buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -549,6 +553,8 @@ hatchindex(index)
|
||||||
|
static void
|
||||||
|
getrgb(int color, int *r, int *g, int *b)
|
||||||
|
{
|
||||||
|
+ if (color < 0) /* DEFAULT color is black */
|
||||||
|
+ color = 0;
|
||||||
|
if (color < NUM_STD_COLS) {
|
||||||
|
*r = stdcols[color].r * 255.;
|
||||||
|
*g = stdcols[color].g * 255.;
|
||||||
|
diff --git a/fig2dev/dev/genge.c b/fig2dev/dev/genge.c
|
||||||
|
index 8caabf1..c2ab712 100644
|
||||||
|
--- a/fig2dev/dev/genge.c
|
||||||
|
+++ b/fig2dev/dev/genge.c
|
||||||
|
@@ -52,7 +52,8 @@ static void genge_ctl_spline(F_spline *s);
|
||||||
|
/* color mapping */
|
||||||
|
/* xfig ge */
|
||||||
|
|
||||||
|
-static int GE_COLORS[] = { 1, /* black black */
|
||||||
|
+static int GE_COLORS[] = { 1, /* DEFAULT == black */
|
||||||
|
+ 1, /* black black */
|
||||||
|
8, /* blue blue */
|
||||||
|
7, /* green green */
|
||||||
|
6, /* cyan cyan */
|
||||||
|
@@ -434,7 +435,7 @@ back_arrow(F_line *l)
|
||||||
|
static void
|
||||||
|
set_color(int col)
|
||||||
|
{
|
||||||
|
- fprintf(tfp,"c%02d ",GE_COLORS[col]);
|
||||||
|
+ fprintf(tfp,"c%02d ",GE_COLORS[col + 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set fill if there is a fill style */
|
||||||
|
@@ -443,7 +444,7 @@ static void
|
||||||
|
set_fill(int style, int color)
|
||||||
|
{
|
||||||
|
if (style != UNFILLED)
|
||||||
|
- fprintf(tfp,"C%02d ",GE_COLORS[color]);
|
||||||
|
+ fprintf(tfp,"C%02d ",GE_COLORS[color + 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff --git a/fig2dev/tests/data/line.fig b/fig2dev/tests/data/line.fig
|
||||||
|
index e033b12..bfc4976 100644
|
||||||
|
--- a/fig2dev/tests/data/line.fig
|
||||||
|
+++ b/fig2dev/tests/data/line.fig
|
||||||
|
@@ -7,5 +7,5 @@ A9
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
-2 1 0 3 0 7 50 -1 -1 0.0 0 0 -1 0 0 3
|
||||||
|
+2 1 0 3 -1 7 50 -1 -1 0.0 0 0 -1 0 0 3
|
||||||
|
50 50 500 50 500 200
|
||||||
|
diff --git a/fig2dev/tests/output.at b/fig2dev/tests/output.at
|
||||||
|
index 9a1bc45..79788cc 100644
|
||||||
|
--- a/fig2dev/tests/output.at
|
||||||
|
+++ b/fig2dev/tests/output.at
|
||||||
|
@@ -261,3 +261,13 @@ AT_CHECK([fig2dev -L tikz -P big1.fig big1.tex && \
|
||||||
|
latex -halt-on-error big1.tex && latex -halt-on-error big2.tex
|
||||||
|
], 0, ignore)
|
||||||
|
AT_CLEANUP
|
||||||
|
+
|
||||||
|
+AT_BANNER([Test other output languages.])
|
||||||
|
+
|
||||||
|
+AT_SETUP([allow default color in ge, cgm output, #72, #73])
|
||||||
|
+AT_KEYWORDS(cgm ge)
|
||||||
|
+AT_CHECK([fig2dev -L cgm $srcdir/data/line.fig
|
||||||
|
+], 0, ignore)
|
||||||
|
+AT_CHECK([fig2dev -L ge $srcdir/data/line.fig
|
||||||
|
+], 0, ignore)
|
||||||
|
+AT_CLEANUP
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
25
0010-CVE-2020-21683.patch
Normal file
25
0010-CVE-2020-21683.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Subject: [PATCH] Fix pstricks fill with non-solid default color
|
||||||
|
|
||||||
|
In the pstricks output, filling an area with the shaded or tinted default color
|
||||||
|
is now equivalent to filling with shaded or tinted black color.
|
||||||
|
---
|
||||||
|
fig2dev/dev/genpstricks.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/dev/genpstricks.c b/fig2dev/dev/genpstricks.c
|
||||||
|
index cf49207..40ea577 100644
|
||||||
|
--- a/fig2dev/dev/genpstricks.c
|
||||||
|
+++ b/fig2dev/dev/genpstricks.c
|
||||||
|
@@ -1856,7 +1856,8 @@ format_options(char *options, char *prefix, char *postfix, char *sqrb_init,
|
||||||
|
else if (fill_style <= 40)
|
||||||
|
/* shade or tint fill */
|
||||||
|
sprintf(tmps, "fillstyle=solid,fillcolor=%s",
|
||||||
|
- shade_or_tint_name_after_declare_color(tmpc, fill_style, fill_color));
|
||||||
|
+ shade_or_tint_name_after_declare_color(tmpc, fill_style,
|
||||||
|
+ fill_color == DEFAULT ? CT_BLACK : fill_color));
|
||||||
|
else {
|
||||||
|
char *type = 0, *ps;
|
||||||
|
int angle = 0;
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
55
0011-CVE-2020-21680.patch
Normal file
55
0011-CVE-2020-21680.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
Subject: [PATCH] Allow arrows with zero length on arcs
|
||||||
|
|
||||||
|
Use the tangent, not a secant, for short arrows on arcs.
|
||||||
|
---
|
||||||
|
fig2dev/bound.c | 9 ++++-----
|
||||||
|
fig2dev/tests/output.at | 8 ++++++++
|
||||||
|
2 files changed, 12 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/bound.c b/fig2dev/bound.c
|
||||||
|
index ce7f4d1..9e997b7 100644
|
||||||
|
--- a/fig2dev/bound.c
|
||||||
|
+++ b/fig2dev/bound.c
|
||||||
|
@@ -1095,16 +1095,15 @@ compute_arcarrow_angle(double x1, double y1, double x2, double y2,
|
||||||
|
r=sqrt(dx*dx+dy*dy);
|
||||||
|
h = (double) arrow->ht;
|
||||||
|
/* lines are made a little thinner in set_linewidth */
|
||||||
|
- thick = (arrow->thickness <= THICK_SCALE) ?
|
||||||
|
- 0.5* arrow->thickness :
|
||||||
|
- arrow->thickness - THICK_SCALE;
|
||||||
|
+ thick = arrow->thickness <= THICK_SCALE ?
|
||||||
|
+ 0.5 * arrow->thickness : arrow->thickness - THICK_SCALE;
|
||||||
|
/* lpt is the amount the arrowhead extends beyond the end of the line */
|
||||||
|
lpt = thick/2.0/(arrow->wid/h/2.0);
|
||||||
|
/* add this to the length */
|
||||||
|
h += lpt;
|
||||||
|
|
||||||
|
- /* radius too small for this method, use normal method */
|
||||||
|
- if (h > 2.0*r) {
|
||||||
|
+ /* secant would be too large or too small */
|
||||||
|
+ if (h > 2.0*r || h < 0.01*r) {
|
||||||
|
arc_tangent_int(x1,y1,x2,y2,direction,x,y);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
diff --git a/fig2dev/tests/output.at b/fig2dev/tests/output.at
|
||||||
|
index 79788cc..9150dbe 100644
|
||||||
|
--- a/fig2dev/tests/output.at
|
||||||
|
+++ b/fig2dev/tests/output.at
|
||||||
|
@@ -175,6 +175,14 @@ AT_CHECK([fig2dev -L pict2e -P big1.fig big1.tex && \
|
||||||
|
], 0, ignore)
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([accept arc arrows with zero height, ticket #74])
|
||||||
|
+AT_KEYWORDS(pict2e)
|
||||||
|
+AT_CHECK([fig2dev -L pict2e <<EOF
|
||||||
|
+FIG_FILE_TOP
|
||||||
|
+5 1 0 1 0 7 50 -1 -1 0.0 0 0 1 0 0.0 0.0 600 0 0 600 -600 0
|
||||||
|
+ 1 1 1.0 60.0 0.0
|
||||||
|
+EOF], 0, ignore)
|
||||||
|
+AT_CLEANUP
|
||||||
|
|
||||||
|
AT_BANNER([Test svg output language.])
|
||||||
|
AT_SETUP([compare patterns with template])
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
134
0012-CVE-2020-21678-CVE-2020-21684.patch
Normal file
134
0012-CVE-2020-21678-CVE-2020-21684.patch
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
From 8e7bcd6952535163a919e1f6891b44521ba86a8d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ondrej Dubaj <odubaj@redhat.com>
|
||||||
|
Date: Fri, 3 Sep 2021 08:15:34 +0200
|
||||||
|
Subject: [PATCH] Reject ASCII NUL anywhere in the input
|
||||||
|
|
||||||
|
The input is read in line by line, stored in a buffer and processed further
|
||||||
|
with sscanf(). Embedded NUL characters ('\0') would already disturb sscanf(),
|
||||||
|
and nowhere does the code expect NUL characters. Therefore, detect NUL while
|
||||||
|
reading the input, and exit with an error message when NUL is found anywere.
|
||||||
|
Fixes ticket #80.
|
||||||
|
---
|
||||||
|
CHANGES | 4 ++++
|
||||||
|
fig2dev/read.c | 21 +++++++++++++++++++--
|
||||||
|
fig2dev/tests/data/text_w_ascii0.fig | 12 ++++++++++++
|
||||||
|
fig2dev/tests/read.at | 16 ++++++++++++++++
|
||||||
|
4 files changed, 51 insertions(+), 2 deletions(-)
|
||||||
|
create mode 100644 fig2dev/tests/data/text_w_ascii0.fig
|
||||||
|
|
||||||
|
diff --git a/CHANGES b/CHANGES
|
||||||
|
index 4a414fa..f1bbbc3 100644
|
||||||
|
--- a/CHANGES
|
||||||
|
+++ b/CHANGES
|
||||||
|
@@ -6,6 +6,10 @@ Patchlevel Xx (Xxx 20xx)
|
||||||
|
|
||||||
|
BUGS FIXED:
|
||||||
|
Ticket numbers refer to https://sourceforge.net/p/mcj/tickets/#.
|
||||||
|
+ o Fix ticket #81.
|
||||||
|
+ o Do not allow ASCII NUL anywhere in input. Fixes ticket #80.
|
||||||
|
+ o Use getline() to improve input scanning.
|
||||||
|
+ Fixes tickets #58, #59, #61, #62, #67, #78, #79.
|
||||||
|
o Correctly scan embedded pdfs for /MediaBox value.
|
||||||
|
o Convert polygons having too few points to polylines. Ticket #56.
|
||||||
|
o Reject huge arrow types causing integer overflow. Ticket #57.
|
||||||
|
diff --git a/fig2dev/read.c b/fig2dev/read.c
|
||||||
|
index aea9537..6e47f2d 100644
|
||||||
|
--- a/fig2dev/read.c
|
||||||
|
+++ b/fig2dev/read.c
|
||||||
|
@@ -200,8 +200,14 @@ read_objects(FILE *fp, F_compound *obj)
|
||||||
|
put_msg("Could not read input file.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
- /* seek to the end of the first line */
|
||||||
|
- if (strchr(buf, '\n') == NULL) {
|
||||||
|
+
|
||||||
|
+ /* check for embedded '\0' */
|
||||||
|
+ if (strlen(buf) < sizeof buf - 1 && buf[strlen(buf) - 1] != '\n') {
|
||||||
|
+ put_msg("ASCII NUL ('\\0') character within the first line.");
|
||||||
|
+ exit(EXIT_FAILURE);
|
||||||
|
+ /* seek to the end of the first line
|
||||||
|
+ (the only place, where '\0's are tolerated) */
|
||||||
|
+ } else if (buf[strlen(buf) - 1] != '\n') {
|
||||||
|
int c;
|
||||||
|
do
|
||||||
|
c = fgetc(fp);
|
||||||
|
@@ -1399,6 +1405,15 @@ read_splineobject(FILE *fp, char **restrict line, size_t *line_len,
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void
|
||||||
|
+exit_on_ascii_NUL(const char *restrict line, size_t chars, int line_no)
|
||||||
|
+{
|
||||||
|
+ if (strlen(line) < (size_t)chars) {
|
||||||
|
+ put_msg("ASCII NUL ('\\0') in line %d.", line_no);
|
||||||
|
+ exit(EXIT_FAILURE);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static char *
|
||||||
|
find_end(const char *str, int v30flag)
|
||||||
|
{
|
||||||
|
@@ -1470,6 +1485,7 @@ read_textobject(FILE *fp, char **restrict line, size_t *line_len, int *line_no)
|
||||||
|
|
||||||
|
while ((chars = getline(line, line_len, fp)) != -1) {
|
||||||
|
++(*line_no);
|
||||||
|
+ exit_on_ascii_NUL(*line, chars, *line_no);
|
||||||
|
end = find_end(*line, v30_flag);
|
||||||
|
if (end) {
|
||||||
|
*end = '\0';
|
||||||
|
@@ -1641,6 +1657,7 @@ get_line(FILE *fp, char **restrict line, size_t *line_len, int *line_no)
|
||||||
|
if (**line == '\n' || (**line == '\r' &&
|
||||||
|
chars == 2 && (*line)[1] == '\n'))
|
||||||
|
continue;
|
||||||
|
+ exit_on_ascii_NUL(*line, chars, *line_no);
|
||||||
|
/* remove newline and possibly a carriage return */
|
||||||
|
if ((*line)[chars-1] == '\n') {
|
||||||
|
chars -= (*line)[chars - 2] == '\r' ? 2 : 1;
|
||||||
|
diff --git a/fig2dev/tests/data/text_w_ascii0.fig b/fig2dev/tests/data/text_w_ascii0.fig
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..c0aa754
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/fig2dev/tests/data/text_w_ascii0.fig
|
||||||
|
@@ -0,0 +1,12 @@
|
||||||
|
+#FIG 3.2
|
||||||
|
+Landscape
|
||||||
|
+Center
|
||||||
|
+Inches
|
||||||
|
+Letter
|
||||||
|
+100.00
|
||||||
|
+Single
|
||||||
|
+-2
|
||||||
|
+1200 2
|
||||||
|
+4 0 0 2 0 25 163 31 7 0 0 -1 1 0 2
|
||||||
|
+ 0& 4 120 5 y\ 0 0 0^^^^^J^^^^^<U+0080>ÿÿ^^^^^^^^^^^^^^^^^^^^^^45 E\0I1y\001
|
||||||
|
+#4 0 0 50 -1 -1 12 0.0 0 150 405 0 0 An ascii zero '\\0' here ->...and some more text following, with a certain amount of minimum characters\001
|
||||||
|
diff --git a/fig2dev/tests/read.at b/fig2dev/tests/read.at
|
||||||
|
index 9b34bfb..60982b0 100644
|
||||||
|
--- a/fig2dev/tests/read.at
|
||||||
|
+++ b/fig2dev/tests/read.at
|
||||||
|
@@ -406,6 +406,22 @@ EOF
|
||||||
|
])
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([allow tex font -1, ticket #81])
|
||||||
|
+AT_KEYWORDS([pict2e tikz])
|
||||||
|
+AT_DATA([text.fig], [FIG_FILE_TOP
|
||||||
|
+4 0 0 50 -1 -1 12 0.0 0 150 405 0 0 Text\001
|
||||||
|
+])
|
||||||
|
+AT_CHECK([fig2dev -L pict2e text.fig
|
||||||
|
+], 0, ignore)
|
||||||
|
+AT_CHECK([fig2dev -L tikz text.fig
|
||||||
|
+], 0, ignore)
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
+AT_SETUP([reject ASCII NUL ('\0') in input, ticket #80])
|
||||||
|
+AT_KEYWORDS([read.c svg])
|
||||||
|
+AT_CHECK([fig2dev -L svg $srcdir/data/text_w_ascii0.fig], 1, ignore, ignore)
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
AT_BANNER([Dynamically allocate picture file name.])
|
||||||
|
|
||||||
|
AT_SETUP([prepend fig file path to picture file name])
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
83
0013-CVE-2020-21676.patch
Normal file
83
0013-CVE-2020-21676.patch
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
From 180cf468f8999cfb7245bac5b3be447aefa6c852 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ondrej Dubaj <odubaj@redhat.com>
|
||||||
|
Date: Fri, 3 Sep 2021 08:24:19 +0200
|
||||||
|
Subject: [PATCH] Reject text or ellipse angles beyond -2pi to 2pi, #76
|
||||||
|
|
||||||
|
In fact, generously extend the allowed range to -7 to 7.
|
||||||
|
Sane applications, e.g., xfig, certainly keep the angles within one revolution.
|
||||||
|
---
|
||||||
|
CHANGES | 5 +++--
|
||||||
|
fig2dev/object.h | 7 ++++---
|
||||||
|
fig2dev/tests/read.at | 8 ++++++++
|
||||||
|
3 files changed, 15 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGES b/CHANGES
|
||||||
|
index f1bbbc3..52daead 100644
|
||||||
|
--- a/CHANGES
|
||||||
|
+++ b/CHANGES
|
||||||
|
@@ -6,8 +6,9 @@ Patchlevel Xx (Xxx 20xx)
|
||||||
|
|
||||||
|
BUGS FIXED:
|
||||||
|
Ticket numbers refer to https://sourceforge.net/p/mcj/tickets/#.
|
||||||
|
- o Fix ticket #81.
|
||||||
|
- o Do not allow ASCII NUL anywhere in input. Fixes ticket #80.
|
||||||
|
+ o Accept text and ellipse angles only within -2*pi to 2*pi. Fixes #76.
|
||||||
|
+ o Allow -1 as default TeX font, not only 0. Fixes #71, #75, #81.
|
||||||
|
+ o Do not allow ASCII NUL anywhere in input. Fixes #65, #68, #73, #80.
|
||||||
|
o Use getline() to improve input scanning.
|
||||||
|
Fixes tickets #58, #59, #61, #62, #67, #78, #79.
|
||||||
|
o Correctly scan embedded pdfs for /MediaBox value.
|
||||||
|
diff --git a/fig2dev/object.h b/fig2dev/object.h
|
||||||
|
index fe56bbb..8464010 100644
|
||||||
|
--- a/fig2dev/object.h
|
||||||
|
+++ b/fig2dev/object.h
|
||||||
|
@@ -3,7 +3,7 @@
|
||||||
|
* Copyright (c) 1991 by Micah Beck
|
||||||
|
* Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
|
||||||
|
* Parts Copyright (c) 1989-2015 by Brian V. Smith
|
||||||
|
- * Parts Copyright (c) 2015-2019 by Thomas Loimer
|
||||||
|
+ * Parts Copyright (c) 2015-2020 by Thomas Loimer
|
||||||
|
*
|
||||||
|
* Any party obtaining a copy of these files is granted, free of charge, a
|
||||||
|
* full and unrestricted irrevocable, world-wide, paid up, royalty-free,
|
||||||
|
@@ -94,7 +94,8 @@ typedef struct f_ellipse {
|
||||||
|
#define INVALID_ELLIPSE(e) \
|
||||||
|
e->type < T_ELLIPSE_BY_RAD || e->type > T_CIRCLE_BY_DIA || \
|
||||||
|
COMMON_PROPERTIES(e) || (e->direction != 1 && e->direction != 0) || \
|
||||||
|
- e->radiuses.x == 0 || e->radiuses.y == 0
|
||||||
|
+ e->radiuses.x == 0 || e->radiuses.y == 0 || \
|
||||||
|
+ e->angle < -7. || e->angle > 7.
|
||||||
|
|
||||||
|
typedef struct f_arc {
|
||||||
|
int type;
|
||||||
|
@@ -243,7 +244,7 @@ typedef struct f_text {
|
||||||
|
t->type < T_LEFT_JUSTIFIED || t->type > T_RIGHT_JUSTIFIED || \
|
||||||
|
t->font < DEFAULT || t->font > MAX_PSFONT || \
|
||||||
|
t->flags < DEFAULT || t->flags >= 2 * HIDDEN_TEXT || \
|
||||||
|
- t->height < 0 || t->length < 0
|
||||||
|
+ t->height < 0 || t->length < 0 || t->angle < -7. || t->angle > 7.
|
||||||
|
|
||||||
|
typedef struct f_control {
|
||||||
|
double lx, ly, rx, ry; /* used by older versions*/
|
||||||
|
diff --git a/fig2dev/tests/read.at b/fig2dev/tests/read.at
|
||||||
|
index 60982b0..c53fbb9 100644
|
||||||
|
--- a/fig2dev/tests/read.at
|
||||||
|
+++ b/fig2dev/tests/read.at
|
||||||
|
@@ -422,6 +422,14 @@ AT_KEYWORDS([read.c svg])
|
||||||
|
AT_CHECK([fig2dev -L svg $srcdir/data/text_w_ascii0.fig], 1, ignore, ignore)
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([reject out of range text angle, ticket #76])
|
||||||
|
+AT_CHECK([fig2dev -L pstricks <<EOF
|
||||||
|
+FIG_FILE_TOP
|
||||||
|
+4 0 0 50 -1 -1 12 9e26 0 150 405 0 0 Very slanted text\001
|
||||||
|
+EOF
|
||||||
|
+], 1, ignore, ignore)
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
AT_BANNER([Dynamically allocate picture file name.])
|
||||||
|
|
||||||
|
AT_SETUP([prepend fig file path to picture file name])
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
32
0014-CVE-2020-21529.patch
Normal file
32
0014-CVE-2020-21529.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From 2397ae3bb903f59a017c8ec9db87164048b86827 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ondrej Dubaj <odubaj@redhat.com>
|
||||||
|
Date: Mon, 20 Sep 2021 08:31:22 +0200
|
||||||
|
Subject: [PATCH] Keep coordinates of spline controls within sane range
|
||||||
|
|
||||||
|
---
|
||||||
|
fig2dev/read.c | 9 +++++++++
|
||||||
|
1 file changed, 9 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/read.c b/fig2dev/read.c
|
||||||
|
index 6e47f2d..349a685 100644
|
||||||
|
--- a/fig2dev/read.c
|
||||||
|
+++ b/fig2dev/read.c
|
||||||
|
@@ -1392,6 +1392,15 @@ read_splineobject(FILE *fp, char **restrict line, size_t *line_len,
|
||||||
|
cp->next = NULL;
|
||||||
|
free_splinestorage(s);
|
||||||
|
return NULL;
|
||||||
|
+ }
|
||||||
|
+ if (lx < INT_MIN || lx > INT_MAX || ly < INT_MIN || ly > INT_MAX ||
|
||||||
|
+ rx < INT_MIN || rx > INT_MAX || ry < INT_MIN || ry > INT_MAX) {
|
||||||
|
+ /* do not care to clean up, we exit anyway
|
||||||
|
+ cp->next = NULL;
|
||||||
|
+ free_splinestorage(s); */
|
||||||
|
+ put_msg("Spline control points out of range at line %d.",
|
||||||
|
+ *line_no);
|
||||||
|
+ exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
cq->lx = lx; cq->ly = ly;
|
||||||
|
cq->rx = rx; cq->ry = ry;
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
134
0015-CVE-2020-21532.patch
Normal file
134
0015-CVE-2020-21532.patch
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
From ae23821f5959ee7c6d10cf0219fad013d3469a6f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ondrej Dubaj <odubaj@redhat.com>
|
||||||
|
Date: Tue, 21 Sep 2021 10:35:53 +0200
|
||||||
|
Subject: [PATCH] Accept -1 as default TeX font, fixes ticket #81
|
||||||
|
|
||||||
|
The default for PostScript fonts is -1, for TeX fonts 0. Accepting -1 for TeX
|
||||||
|
fonts lead to out-of-bound read. Now, -1 for TeX fonts is converted to 0.
|
||||||
|
|
||||||
|
Accept -1 TeX font in more places, fixes #71, #75
|
||||||
|
|
||||||
|
Continue the work started in commit [00cded]. Fix the fundamental issue of
|
||||||
|
tickets #71 and #75, which was hidden by commit [d70e4b].
|
||||||
|
---
|
||||||
|
fig2dev/dev/genpict2e.c | 9 +++++----
|
||||||
|
fig2dev/dev/gentikz.c | 9 +++++----
|
||||||
|
fig2dev/dev/texfonts.h | 14 +++++++++-----
|
||||||
|
fig2dev/tests/read.at | 14 +++++++++++++-
|
||||||
|
4 files changed, 32 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/dev/genpict2e.c b/fig2dev/dev/genpict2e.c
|
||||||
|
index 9f828f0..22daedd 100644
|
||||||
|
--- a/fig2dev/dev/genpict2e.c
|
||||||
|
+++ b/fig2dev/dev/genpict2e.c
|
||||||
|
@@ -2222,11 +2222,12 @@ put_font(F_text *t)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (psfont_text(t))
|
||||||
|
- fprintf(tfp, "\\usefont%s",
|
||||||
|
- texpsfonts[t->font <= MAX_PSFONT ? t->font + 1 : 0]);
|
||||||
|
+ fprintf(tfp, "\\usefont%s", texpsfonts[t->font <= MAX_PSFONT ?
|
||||||
|
+ t->font + 1 : 0]);
|
||||||
|
else
|
||||||
|
- fprintf(tfp, "\\normalfont%s ",
|
||||||
|
- texfonts[t->font <= MAX_FONT ? t->font : MAX_FONT - 1]);
|
||||||
|
+ /* Default psfont is -1, default texfont 0, also accept -1. */
|
||||||
|
+ fprintf(tfp, "\\normalfont%s ", texfonts[t->font <= MAX_FONT ?
|
||||||
|
+ (t->font >= 0 ? t->font : 0) : MAX_FONT - 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
diff --git a/fig2dev/dev/gentikz.c b/fig2dev/dev/gentikz.c
|
||||||
|
index 96ee41c..6d8aff4 100644
|
||||||
|
--- a/fig2dev/dev/gentikz.c
|
||||||
|
+++ b/fig2dev/dev/gentikz.c
|
||||||
|
@@ -1771,11 +1771,12 @@ put_font(F_text *t)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (psfont_text(t))
|
||||||
|
- fprintf(tfp, "\\usefont%s",
|
||||||
|
- texpsfonts[t->font <= MAX_PSFONT ? t->font + 1 : 0]);
|
||||||
|
+ fprintf(tfp, "\\usefont%s", texpsfonts[t->font <= MAX_PSFONT ?
|
||||||
|
+ t->font + 1 : 0]);
|
||||||
|
else
|
||||||
|
- fprintf(tfp, "\\normalfont%s ",
|
||||||
|
- texfonts[t->font <= MAX_FONT ? t->font : MAX_FONT - 1]);
|
||||||
|
+ /* Default psfont is -1, default texfont 0, also accept -1. */
|
||||||
|
+ fprintf(tfp, "\\normalfont%s ", texfonts[t->font <= MAX_FONT ?
|
||||||
|
+ (t->font >= 0 ? t->font : 0) : MAX_FONT - 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff --git a/fig2dev/dev/texfonts.h b/fig2dev/dev/texfonts.h
|
||||||
|
index 89097f2..e5254b6 100644
|
||||||
|
--- a/fig2dev/dev/texfonts.h
|
||||||
|
+++ b/fig2dev/dev/texfonts.h
|
||||||
|
@@ -35,17 +35,21 @@ extern char texfontsizes[];
|
||||||
|
#define MAXFONTSIZE 42
|
||||||
|
|
||||||
|
#ifdef NFSS
|
||||||
|
-#define TEXFAMILY(F) (texfontfamily[((F) <= MAX_FONT) ? (F) : (MAX_FONT-1)])
|
||||||
|
-#define TEXSERIES(F) (texfontseries[((F) <= MAX_FONT) ? (F) : (MAX_FONT-1)])
|
||||||
|
-#define TEXSHAPE(F) (texfontshape[((F) <= MAX_FONT) ? (F) : (MAX_FONT-1)])
|
||||||
|
+#define TEXFAMILY(F) texfontfamily[(F) <= MAX_FONT ? ((F) >= 0 ? (F) : 0) \
|
||||||
|
+ : MAX_FONT-1]
|
||||||
|
+#define TEXSERIES(F) texfontseries[(F) <= MAX_FONT ? ((F) >= 0 ? (F) : 0) \
|
||||||
|
+ : MAX_FONT-1]
|
||||||
|
+#define TEXSHAPE(F) texfontshape[(F) <= MAX_FONT ? ((F) >= 0 ? (F) : 0) \
|
||||||
|
+ : MAX_FONT-1]
|
||||||
|
#endif
|
||||||
|
-#define TEXFONT(F) (texfontnames[((F) <= MAX_FONT) ? (F) : (MAX_FONT-1)])
|
||||||
|
+#define TEXFONT(F) texfontnames[(F) <= MAX_FONT ? ((F) >= 0 ? (F) : 0) \
|
||||||
|
+ : MAX_FONT-1]
|
||||||
|
|
||||||
|
/*
|
||||||
|
#define TEXFONTSIZE(S) (texfontsizes[((S) <= MAXFONTSIZE) ? (int)(round(S))\
|
||||||
|
: (MAXFONTSIZE-1)])
|
||||||
|
*/
|
||||||
|
-#define TEXFONTSIZE(S) (((S) <= MAXFONTSIZE) ? texfontsizes[(int)(round(S))] : (S))
|
||||||
|
+#define TEXFONTSIZE(S) ((S) <= MAXFONTSIZE ? texfontsizes[(int)round(S)] : (S))
|
||||||
|
#define TEXFONTMAG(T) TEXFONTSIZE(T->size*(rigid_text(T) ? 1.0 : fontmag))
|
||||||
|
|
||||||
|
void setfigfont(F_text *text); /* genepic.c */
|
||||||
|
diff --git a/fig2dev/tests/read.at b/fig2dev/tests/read.at
|
||||||
|
index c53fbb9..d85356b 100644
|
||||||
|
--- a/fig2dev/tests/read.at
|
||||||
|
+++ b/fig2dev/tests/read.at
|
||||||
|
@@ -406,7 +406,7 @@ EOF
|
||||||
|
])
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
-AT_SETUP([allow tex font -1, ticket #81])
|
||||||
|
+AT_SETUP([allow tex font -1, tickets #71, #75, #81])
|
||||||
|
AT_KEYWORDS([pict2e tikz])
|
||||||
|
AT_DATA([text.fig], [FIG_FILE_TOP
|
||||||
|
4 0 0 50 -1 -1 12 0.0 0 150 405 0 0 Text\001
|
||||||
|
@@ -415,6 +415,8 @@ AT_CHECK([fig2dev -L pict2e text.fig
|
||||||
|
], 0, ignore)
|
||||||
|
AT_CHECK([fig2dev -L tikz text.fig
|
||||||
|
], 0, ignore)
|
||||||
|
+AT_CHECK([fig2dev -L mp text.fig
|
||||||
|
+], 0, ignore)
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
AT_SETUP([reject ASCII NUL ('\0') in input, ticket #80])
|
||||||
|
@@ -430,6 +432,16 @@ EOF
|
||||||
|
], 1, ignore, ignore)
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
+AT_SETUP([allow tex font -1, ticket #81])
|
||||||
|
+AT_DATA([text.fig], [FIG_FILE_TOP
|
||||||
|
+4 0 0 50 -1 -1 12 0.0 0 150 405 0 0 Text\001
|
||||||
|
+])
|
||||||
|
+AT_CHECK([fig2dev -L pict2e text.fig
|
||||||
|
+], 0, ignore)
|
||||||
|
+AT_CHECK([fig2dev -L tikz text.fig
|
||||||
|
+], 0, ignore)
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
AT_BANNER([Dynamically allocate picture file name.])
|
||||||
|
|
||||||
|
AT_SETUP([prepend fig file path to picture file name])
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
63
0016-CVE-2020-21531.patch
Normal file
63
0016-CVE-2020-21531.patch
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
From d50ae523fcee5c2d4357bbd8ce5baeeb18d15a2c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ondrej Dubaj <odubaj@redhat.com>
|
||||||
|
Date: Tue, 21 Sep 2021 10:42:50 +0200
|
||||||
|
Subject: [PATCH] Reject out-of-range pattern
|
||||||
|
|
||||||
|
---
|
||||||
|
fig2dev/object.h | 2 +-
|
||||||
|
fig2dev/tests/read.at | 19 +++++++++++++++++--
|
||||||
|
2 files changed, 18 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/object.h b/fig2dev/object.h
|
||||||
|
index 8464010..6830b13 100644
|
||||||
|
--- a/fig2dev/object.h
|
||||||
|
+++ b/fig2dev/object.h
|
||||||
|
@@ -61,7 +61,7 @@ typedef struct f_comment {
|
||||||
|
o->style < SOLID_LINE || o->style > DASH_3_DOTS_LINE || \
|
||||||
|
o->thickness < 0 || o->depth < 0 || o->depth > 999 || \
|
||||||
|
o->fill_style < UNFILLED || \
|
||||||
|
- o->fill_style > NUMSHADES + NUMTINTS + NUMPATTERNS || \
|
||||||
|
+ o->fill_style >= NUMSHADES + NUMTINTS + NUMPATTERNS || \
|
||||||
|
o->style_val < 0.0
|
||||||
|
|
||||||
|
typedef struct f_ellipse {
|
||||||
|
diff --git a/fig2dev/tests/read.at b/fig2dev/tests/read.at
|
||||||
|
index d85356b..7765805 100644
|
||||||
|
--- a/fig2dev/tests/read.at
|
||||||
|
+++ b/fig2dev/tests/read.at
|
||||||
|
@@ -421,15 +421,30 @@ AT_CLEANUP
|
||||||
|
|
||||||
|
AT_SETUP([reject ASCII NUL ('\0') in input, ticket #80])
|
||||||
|
AT_KEYWORDS([read.c svg])
|
||||||
|
-AT_CHECK([fig2dev -L svg $srcdir/data/text_w_ascii0.fig], 1, ignore, ignore)
|
||||||
|
+AT_CHECK([fig2dev -L svg $srcdir/data/text_w_ascii0.fig],
|
||||||
|
+1, ignore, [ASCII NUL ('\0') in line 11.
|
||||||
|
+])
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
AT_SETUP([reject out of range text angle, ticket #76])
|
||||||
|
+AT_KEYWORDS([read.c pstricks])
|
||||||
|
AT_CHECK([fig2dev -L pstricks <<EOF
|
||||||
|
FIG_FILE_TOP
|
||||||
|
4 0 0 50 -1 -1 12 9e26 0 150 405 0 0 Very slanted text\001
|
||||||
|
EOF
|
||||||
|
-], 1, ignore, ignore)
|
||||||
|
+], 1, ignore, [Invalid text object at line 10.
|
||||||
|
+])
|
||||||
|
+AT_CLEANUP
|
||||||
|
+
|
||||||
|
+AT_SETUP([reject out-of-range pattern fills, ticket #63])
|
||||||
|
+AT_KEYWORDS([read.c cgm])
|
||||||
|
+AT_CHECK([fig2dev -L cgm <<EOF
|
||||||
|
+FIG_FILE_TOP
|
||||||
|
+2 3 0 0 0 7 50 -1 63 0.000 0 0 -1 0 0 4
|
||||||
|
+ 0 0 1200 0 600 800 0 0
|
||||||
|
+EOF
|
||||||
|
+], 1, ignore, [Invalid line object at line 10.
|
||||||
|
+])
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
AT_SETUP([allow tex font -1, ticket #81])
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
29
0017-CVE-2021-32280.patch
Normal file
29
0017-CVE-2021-32280.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From fa5a2dced5cad973c3a9c9e83f21165942f1cd6d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ondrej Dubaj <odubaj@redhat.com>
|
||||||
|
Date: Thu, 23 Sep 2021 09:49:37 +0200
|
||||||
|
Subject: [PATCH] Do not crash on incomplete, closed splines
|
||||||
|
|
||||||
|
---
|
||||||
|
fig2dev/trans_spline.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/trans_spline.c b/fig2dev/trans_spline.c
|
||||||
|
index 0905c79..60c54ad 100644
|
||||||
|
--- a/fig2dev/trans_spline.c
|
||||||
|
+++ b/fig2dev/trans_spline.c
|
||||||
|
@@ -226,6 +226,12 @@ compute_closed_spline(F_spline *spline, float precision)
|
||||||
|
if (!init_point_array(300, 200))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
+ if (!(spline->points /* p0 */ && spline->controls /* s0 */ &&
|
||||||
|
+ spline->points->next /* p1 */ && spline->controls->next /* s1 */ &&
|
||||||
|
+ spline->points->next->next && spline->controls->next->next/* p2, s2 */&&
|
||||||
|
+ spline->points->next->next->next && spline->controls->next->next->next))
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
INIT_CONTROL_POINTS(spline, p0, s0, p1, s1, p2, s2, p3, s3);
|
||||||
|
COPY_CONTROL_POINT(first, s_first, p0, s0);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
39
0018-exit-no-args.patch
Normal file
39
0018-exit-no-args.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
Subject: [PATCH] Exit correctly when invoked without arguments
|
||||||
|
https://sourceforge.net/p/mcj/fig2dev/ci/11fba42e388ff7d92f81518406429bdea0a6a3b3
|
||||||
|
|
||||||
|
---
|
||||||
|
fig2dev/fig2dev.c | 10 ++++++----
|
||||||
|
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/fig2dev/fig2dev.c b/fig2dev/fig2dev.c
|
||||||
|
index 62ec099..949671e 100644
|
||||||
|
--- a/fig2dev/fig2dev.c
|
||||||
|
+++ b/fig2dev/fig2dev.c
|
||||||
|
@@ -161,9 +161,9 @@ static struct depth_opts {
|
||||||
|
|
||||||
|
static char Usage[] =
|
||||||
|
#ifdef I18N
|
||||||
|
-"Usage:\n %s -hV\n %s -L language [-s size] [-m scale] [-j] [input [output]]\n";
|
||||||
|
+"Usage:\n %1$s -hV\n %1$s -L language [-s size] [-m scale] [-j] [input [output]]\n";
|
||||||
|
#else
|
||||||
|
- "Usage:\n %s -hV\n %s -L language [-s size] [-m scale] [input [output]]\n";
|
||||||
|
+ "Usage:\n %1$s -hV\n %1$s -L language [-s size] [-m scale] [input [output]]\n";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int parse_gridspec(char *string, float *numer, float *denom,
|
||||||
|
@@ -218,8 +218,10 @@ get_args(int argc, char *argv[])
|
||||||
|
char *grid, *p;
|
||||||
|
float numer, denom;
|
||||||
|
|
||||||
|
- if (argc == 1)
|
||||||
|
- fprintf(stderr, Usage, prog, prog);
|
||||||
|
+ if (argc == 1) {
|
||||||
|
+ fprintf(stderr, Usage, prog);
|
||||||
|
+ exit(EXIT_SUCCESS);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* print the version, for the comfort of the autotest tests */
|
||||||
|
if (!strcmp(argv[1], "--version")) {
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
diff -up fig2dev-3.2.6a/fig2dev/read.c.orig fig2dev-3.2.6a/fig2dev/read.c
|
|
||||||
--- fig2dev-3.2.6a/fig2dev/read.c.orig 2017-01-07 23:01:19.000000000 +0100
|
|
||||||
+++ fig2dev-3.2.6a/fig2dev/read.c 2017-11-21 15:17:31.195643198 +0100
|
|
||||||
@@ -1329,8 +1329,14 @@ read_textobject(FILE *fp)
|
|
||||||
| PSFONT_TEXT;
|
|
||||||
|
|
||||||
/* keep the font number reasonable */
|
|
||||||
- if (t->font > MAXFONT(t))
|
|
||||||
+ if (t->font > MAXFONT(t)) {
|
|
||||||
t->font = MAXFONT(t);
|
|
||||||
+ } else if (t->font < 0 ) {
|
|
||||||
+ if (psfont_text(t) && t->font < -1)
|
|
||||||
+ t->font = -1;
|
|
||||||
+ else
|
|
||||||
+ t->font = 0;
|
|
||||||
+ }
|
|
||||||
fix_and_note_color(&t->color);
|
|
||||||
t->comments = attach_comments(); /* attach any comments */
|
|
||||||
return t;
|
|
||||||
diff -up fig2dev-3.2.6a/fig2dev/read1_3.c.orig fig2dev-3.2.6a/fig2dev/read1_3.c
|
|
||||||
--- fig2dev-3.2.6a/fig2dev/read1_3.c.orig 2016-08-19 21:34:38.000000000 +0200
|
|
||||||
+++ fig2dev-3.2.6a/fig2dev/read1_3.c 2017-11-21 15:17:31.196643206 +0100
|
|
||||||
@@ -470,6 +470,15 @@ read_textobject(FILE *fp)
|
|
||||||
free((char*) t);
|
|
||||||
return(NULL);
|
|
||||||
}
|
|
||||||
+ /* keep the font number within valid range */
|
|
||||||
+ if (t->font > MAXFONT(t)) {
|
|
||||||
+ t->font = MAXFONT(t);
|
|
||||||
+ } else if (t->font < 0 ) {
|
|
||||||
+ if (psfont_text(t) && t->font < -1)
|
|
||||||
+ t->font = -1;
|
|
||||||
+ else
|
|
||||||
+ t->font = 0;
|
|
||||||
+ }
|
|
||||||
(void)strcpy(t->cstring, buf);
|
|
||||||
if (t->size == 0) t->size = 18;
|
|
||||||
return(t);
|
|
@ -1,6 +1,6 @@
|
|||||||
--- !Policy
|
--- !Policy
|
||||||
product_versions:
|
product_versions:
|
||||||
- rhel-8
|
- rhel-9
|
||||||
decision_context: osci_compose_gate
|
decision_context: osci_compose_gate
|
||||||
rules:
|
rules:
|
||||||
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
|
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (fig2dev-3.2.6a.tar.xz) = 082c4d75c66187dc2bd7f3a50b6e117f03f495030fa89d6f70270e15b8f00647a94365e10797c5b1889b4ed1400d3fa6f4a3821e744c79b4483403a930e7d77f
|
SHA512 (fig2dev-3.2.7b.tar.xz) = 134023febf935e76bd5e45695e3718f6af823297743045cf5aaf91136047d8f217785cd150667aa893f8424430bf60e36cad907419118f27fee75aafb02cbe41
|
||||||
|
1
transfig.rpmlintrc
Normal file
1
transfig.rpmlintrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
addFilter("W: spelling-error.*")
|
103
transfig.spec
103
transfig.spec
@ -1,20 +1,41 @@
|
|||||||
Name: transfig
|
Name: transfig
|
||||||
Version: 3.2.6a
|
Version: 3.2.7b
|
||||||
Release: 4%{?dist}
|
Release: 10%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Summary: Utility for converting FIG files (made by xfig) to other formats
|
Summary: Utility for converting FIG files (made by xfig) to other formats
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: https://sourceforge.net/projects/mcj/
|
URL: https://sourceforge.net/projects/mcj/
|
||||||
Source0: http://downloads.sourceforge.net/mcj/fig2dev-%{version}.tar.xz
|
Source0: http://downloads.sourceforge.net/mcj/fig2dev-%{version}.tar.xz
|
||||||
Patch1: fig2dev-3.2.6a-CVE-2017-16899.patch
|
# Patches from upstream for CVE-2019-19746 and CVE-2019-19797 + deps
|
||||||
|
Patch1: 0001-Embed-png-and-jpeg-images-unchanged-into-pdfs.patch
|
||||||
|
Patch2: 0002-Allow-fig-2-text-ending-with-multiple-A-ticket-55.patch
|
||||||
|
Patch3: 0003-Reject-huge-arrow-types-ticket-57.patch
|
||||||
|
Patch4: 0004-Convert-polygons-with-too-few-points-to-polylines.patch
|
||||||
|
Patch5: 0005-Correctly-scan-embedded-pdfs-for-MediaBox-value.patch
|
||||||
|
Patch6: 0006-fig2dev-version-prints-version-information.patch
|
||||||
|
Patch7: 0007-Use-getopt-from-standard-libraries-if-available.patch
|
||||||
|
Patch8: 0008-Replace-most-calls-to-fgets-by-getline-in-read.c.patch
|
||||||
|
Patch9: 0009-CVE-2020-21681-CVE-2020-21682.patch
|
||||||
|
Patch10: 0010-CVE-2020-21683.patch
|
||||||
|
Patch11: 0011-CVE-2020-21680.patch
|
||||||
|
Patch12: 0012-CVE-2020-21678-CVE-2020-21684.patch
|
||||||
|
Patch13: 0013-CVE-2020-21676.patch
|
||||||
|
Patch14: 0014-CVE-2020-21529.patch
|
||||||
|
Patch15: 0015-CVE-2020-21532.patch
|
||||||
|
Patch16: 0016-CVE-2020-21531.patch
|
||||||
|
Patch17: 0017-CVE-2021-32280.patch
|
||||||
|
Patch18: 0018-exit-no-args.patch
|
||||||
|
|
||||||
Requires: ghostscript
|
Requires: ghostscript
|
||||||
Requires: bc
|
Requires: bc
|
||||||
Requires: netpbm-progs
|
Requires: netpbm-progs
|
||||||
|
|
||||||
|
BuildRequires: make
|
||||||
|
BuildRequires: gcc libtool
|
||||||
BuildRequires: libpng-devel
|
BuildRequires: libpng-devel
|
||||||
BuildRequires: libjpeg-devel
|
BuildRequires: libjpeg-devel
|
||||||
BuildRequires: libXpm-devel
|
BuildRequires: libXpm-devel
|
||||||
|
BuildRequires: ghostscript
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The transfig utility creates a makefile which translates FIG (created
|
The transfig utility creates a makefile which translates FIG (created
|
||||||
@ -26,34 +47,98 @@ environments).
|
|||||||
Install transfig if you need a utility for translating FIG or PIC
|
Install transfig if you need a utility for translating FIG or PIC
|
||||||
figures into certain graphics languages.
|
figures into certain graphics languages.
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n fig2dev-%{version}
|
%autosetup -p1 -n fig2dev-%{version}
|
||||||
|
autoreconf -i
|
||||||
|
# Fix the manpage not being in UTF-8
|
||||||
|
iconv -f ISO-8859-15 -t UTF-8 man/fig2dev.1.in -o fig2dev.1.in.new
|
||||||
|
touch -r man/fig2dev.1.in fig2dev.1.in.new
|
||||||
|
mv fig2dev.1.in.new man/fig2dev.1.in
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure --enable-transfig
|
%configure --enable-transfig
|
||||||
make %{?_smp_mflags}
|
%make_build
|
||||||
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%make_install
|
%make_install
|
||||||
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%doc transfig/doc/manual.pdf
|
%doc CHANGES transfig/doc/manual.pdf
|
||||||
%{_bindir}/transfig
|
%{_bindir}/transfig
|
||||||
%{_bindir}/fig2dev
|
%{_bindir}/fig2dev
|
||||||
%{_bindir}/fig2ps2tex
|
%{_bindir}/fig2ps2tex
|
||||||
%{_bindir}/pic2tpic
|
%{_bindir}/pic2tpic
|
||||||
%{_datadir}/fig2dev/bitmaps/*.bmp
|
|
||||||
%{_datadir}/fig2dev/i18n/*.ps
|
%{_datadir}/fig2dev/i18n/*.ps
|
||||||
%{_datadir}/fig2dev/rgb.txt
|
|
||||||
%{_mandir}/man1/*.1.gz
|
%{_mandir}/man1/*.1.gz
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Jul 16 2018 Honza Horak <hhorak@redhat.com> - 1:3.2.6a-4
|
* Mon Oct 18 2021 Ondrej Dubaj <odubaj@redhat.com> - 1:3.2.7b-10
|
||||||
|
- Exit correctly when invoked without arguments (#2015001)
|
||||||
|
|
||||||
|
* Thu Sep 23 2021 Ondrej Dubaj <odubaj@redhat.com> - 1:3.2.7b-9
|
||||||
|
- Fixed CVE-2021-32280 (#2006830)
|
||||||
|
|
||||||
|
* Mon Sep 20 2021 Ondrej Dubaj <odubaj@redhat.com> - 1:3.2.7b-8
|
||||||
|
- Fixed CVE-2020-21529 (#2005518)
|
||||||
|
- Fixed CVE-2020-21532 (#2006007)
|
||||||
|
- Fixed CVE-2020-21531 (#2006002)
|
||||||
|
|
||||||
|
* Mon Aug 30 2021 Ondrej Dubaj <odubaj@redhat.com> - 1:3.2.7b-7
|
||||||
|
- Fixed CVE-2020-21681 (#1998350)
|
||||||
|
- Fixed CVE-2020-21683 (#1998594)
|
||||||
|
- Fixed CVE-2020-21680 (#1998306)
|
||||||
|
- Fixed CVE-2020-21684 (#2000747)
|
||||||
|
- Fixed CVE-2020-21678 (#2000741)
|
||||||
|
- Fixed CVE-2020-21676 (#2000751)
|
||||||
|
- Fixed CVE-2020-21682 (#2000738)
|
||||||
|
|
||||||
|
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 1:3.2.7b-6
|
||||||
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
|
Related: rhbz#1991688
|
||||||
|
|
||||||
|
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1:3.2.7b-5
|
||||||
|
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||||
|
|
||||||
|
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.7b-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.7b-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.7b-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jan 15 2020 Hans de Goede <hdegoede@redhat.com> - 1:3.2.7b-1
|
||||||
|
- New upstream release 3.2.7b
|
||||||
|
- Add patch fixing CVE-2019-19746 (rhbz#1787040)
|
||||||
|
- Add patch fixing CVE-2019-19797 (rhbz#1786726)
|
||||||
|
|
||||||
|
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.7a-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 18 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:3.2.7a-2
|
||||||
|
- Add BR: ghostscript to fix ghostscript detection (#1720868)
|
||||||
|
|
||||||
|
* Thu Jun 06 2019 Ondrej Dubaj <odubaj@redhat.com> - 1:3.2.7a-1
|
||||||
|
- Updated to version 3.2.7a
|
||||||
|
|
||||||
|
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.6a-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jul 16 2018 Honza Horak <hhorak@redhat.com> - 1:3.2.6a-5
|
||||||
- Remove license GPLv3+
|
- Remove license GPLv3+
|
||||||
|
|
||||||
* Sun Jul 15 2018 Honza Horak <hhorak@redhat.com> - 1:3.2.6a-3
|
* Sun Jul 15 2018 Honza Horak <hhorak@redhat.com> - 1:3.2.6a-4
|
||||||
- Add license GPLv3+
|
- Add license GPLv3+
|
||||||
|
|
||||||
|
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.6a-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.6a-2
|
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.2.6a-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user