OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src Date: 05-Feb-2005 14:23:34
Branch: HEAD Handle: 2005020513233400
Added files:
openpkg-src/enscript enscript.patch
Modified files:
openpkg-src/enscript enscript.spec
Log:
upgrade to newer version; apply security fixes; cleanup packaging
Summary:
Revision Changes Path
1.1 +393 -0 openpkg-src/enscript/enscript.patch
1.7 +9 -12 openpkg-src/enscript/enscript.spec
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/enscript/enscript.patch
============================================================================
$ cvs diff -u -r0 -r1.1 enscript.patch
--- /dev/null 2005-02-05 14:23:34 +0100
+++ enscript.patch 2005-02-05 14:23:34 +0100
@@ -0,0 +1,393 @@
+Security bugfixes (CAN-2004-1184, CAN-2004-1185, CAN-2004-1186)
+and some additional non-security bugfixes.
+
+Index: compat/regex.c
+--- compat/regex.c.orig 1998-10-20 15:39:02 +0200
++++ compat/regex.c 2005-02-05 09:50:45 +0100
+@@ -2400,11 +2400,13 @@
+ case ')':
+ if (syntax & RE_NO_BK_PARENS) goto normal_backslash;
+
+- if (COMPILE_STACK_EMPTY)
+- if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)
++ if (COMPILE_STACK_EMPTY) {
++ if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) {
+ goto normal_backslash;
+- else
++ } else {
+ FREE_STACK_RETURN (REG_ERPAREN);
++ }
++ }
+
+ handle_close:
+ if (fixup_alt_jump)
+@@ -2420,11 +2422,13 @@
+ }
+
+ /* See similar code for backslashed left paren above. */
+- if (COMPILE_STACK_EMPTY)
+- if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)
++ if (COMPILE_STACK_EMPTY) {
++ if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) {
+ goto normal_char;
+- else
++ } else {
+ FREE_STACK_RETURN (REG_ERPAREN);
++ }
++ }
+
+ /* Since we just checked for an empty stack above, this
+ ``can't happen''. */
+Index: docs/Makefile.in
+--- docs/Makefile.in.orig 2002-01-24 08:39:44 +0100
++++ docs/Makefile.in 2005-02-05 09:50:45 +0100
+@@ -284,7 +284,7 @@
+ enscript.fns enscript.ky enscript.kys enscript.ps \
+ enscript.log enscript.pg enscript.toc enscript.tp \
+ enscript.tps enscript.vr enscript.vrs enscript.op enscript.tr \
+- enscript.cv enscript.cn
++ enscript.cv enscript.cn enscript.1 states.1
+
+ clean-aminfo:
+
+Index: docs/enscript.man
+--- docs/enscript.man.orig 2000-11-30 07:55:31 +0100
++++ docs/enscript.man 2005-02-05 09:50:45 +0100
+@@ -118,7 +118,7 @@
+ The header string \f2header\f1 can contain the same formatting escapes
+ which can be specified for the \f3%Format\f1 directives in the user
+ defined fancy headers. For example, the following option prints the
+-file name, current data and page numbers:
++file name, current date and page numbers:
+
+ \f3enscript \-\-header='$n %W Page $% of $=' *.c\f1
+
+Index: lib/enscript-color.hdr
+--- lib/enscript-color.hdr.orig 1998-12-29 09:40:47 +0100
++++ lib/enscript-color.hdr 2005-02-05 09:50:45 +0100
+@@ -27,8 +27,8 @@
+
+ % -- code follows this line --
+ %%DocumentNeededResources: font Times-Bold Times-Roman
+-%Format: moddatestr $W
+-%Format: modtimestr $C
++%Format: moddatestr $D{%x}
++%Format: modtimestr $D{%X}
+ %Format: pagenumstr $%
+ %Format: pagecountstr /$=
+
+Index: lib/enscript.hdr
+--- lib/enscript.hdr.orig 1997-03-03 09:20:34 +0100
++++ lib/enscript.hdr 2005-02-05 09:50:45 +0100
+@@ -25,8 +25,8 @@
+
+ % -- code follows this line --
+ %%DocumentNeededResources: font Times-Bold Times-Roman
+-%Format: moddatestr $W
+-%Format: modtimestr $C
++%Format: moddatestr $D{%x}
++%Format: modtimestr $D{%X}
+ %Format: pagenumstr $%
+
+ % Fonts.
+Index: src/gsint.h
+--- src/gsint.h.orig 2000-07-11 17:28:06 +0200
++++ src/gsint.h 2005-02-05 09:50:45 +0100
+@@ -701,4 +701,9 @@
+ */
+ void printer_close ___P ((void *context));
+
++/*
++ * Escape filenames for shell usage
++ */
++char *shell_escape ___P ((const char *fn));
++
+ #endif /* not GSINT_H */
+Index: src/main.c
+--- src/main.c.orig 2002-01-24 08:35:45 +0100
++++ src/main.c 2005-02-05 09:50:45 +0100
+@@ -973,6 +973,8 @@
+ */
+ #if HAVE_LC_MESSAGES
+ setlocale (LC_MESSAGES, "");
++ setlocale (LC_CTYPE, "");
++ setlocale (LC_TIME, "");
+ #endif
+ #endif
+ #if ENABLE_NLS
+@@ -1546,9 +1548,13 @@
+ buffer_append (&cmd, intbuf);
+ buffer_append (&cmd, " ");
+
+- buffer_append (&cmd, "-Ddocument_title=\"");
+- buffer_append (&cmd, title);
+- buffer_append (&cmd, "\" ");
++ buffer_append (&cmd, "-Ddocument_title=\'");
++ if ((cp = shell_escape (title)) != NULL)
++ {
++ buffer_append (&cmd, cp);
++ free (cp);
++ }
++ buffer_append (&cmd, "\' ");
+
+ buffer_append (&cmd, "-Dtoc=");
+ buffer_append (&cmd, toc ? "1" : "0");
+@@ -1565,8 +1571,14 @@
+ /* Append input files. */
+ for (i = optind; i < argc; i++)
+ {
+- buffer_append (&cmd, " ");
+- buffer_append (&cmd, argv[i]);
++ char *cp;
++ if ((cp = shell_escape (argv[i])) != NULL)
++ {
++ buffer_append (&cmd, " \'");
++ buffer_append (&cmd, cp);
++ buffer_append (&cmd, "\'");
++ free (cp);
++ }
+ }
+
+ /* And do the job. */
+@@ -1627,7 +1639,7 @@
+ buffer_ptr (opts), buffer_len (opts));
+ }
+
+- buffer_append (&buffer, " \"%s\"");
++ buffer_append (&buffer, " \'%s\'");
+
+ input_filter = buffer_copy (&buffer);
+ input_filter_stdin = "-";
+Index: src/mkafmmap.c
+--- src/mkafmmap.c.orig 1997-07-03 13:14:59 +0200
++++ src/mkafmmap.c 2005-02-05 09:50:45 +0100
+@@ -126,6 +126,7 @@
+ #if HAVE_SETLOCALE
+ #if HAVE_LC_MESSAGES
+ setlocale (LC_MESSAGES, "");
++ setlocale (LC_CTYPE, "");
+ #endif
+ #endif
+ #if ENABLE_NLS
+Index: src/psgen.c
+--- src/psgen.c.orig 2002-01-24 08:38:58 +0100
++++ src/psgen.c 2005-02-05 09:50:45 +0100
+@@ -2034,8 +2034,9 @@
+ else
+ {
+ ftail++;
+- strncpy (buf, fname, ftail - fname);
+- buf[ftail - fname] = '\0';
++ i = ftail - fname >= sizeof (buf)-1 ? sizeof (buf)-1 : ftail - fname;
++ strncpy (buf, fname, i);
++ buf[i] = '\0';
+ }
+
+ if (nup > 1)
+@@ -2385,9 +2386,10 @@
+ MESSAGE (2, (stderr, "[EMAIL PROTECTED]"%s\"\n", token->u.epsf.filename));
+
+ i = strlen (token->u.epsf.filename);
++ /*
+ if (i > 0 && token->u.epsf.filename[i - 1] == '|')
+ {
+- /* Read EPS data from pipe. */
++ / * Read EPS data from pipe. * /
+ token->u.epsf.pipe = 1;
+ token->u.epsf.filename[i - 1] = '\0';
+ token->u.epsf.fp = popen (token->u.epsf.filename, "r");
+@@ -2400,6 +2402,7 @@
+ }
+ }
+ else
++ */
+ {
+ char *filename;
+
+@@ -2581,7 +2584,7 @@
+ read_float (InputStream *is, int units, int horizontal)
+ {
+ char buf[256];
+- int i, ch;
++ int i, ch = 0;
+ double val;
+
+ for (i = 0; (i < sizeof (buf) - 1
+Index: src/util.c
+--- src/util.c.orig 1999-09-17 17:26:51 +0200
++++ src/util.c 2005-02-05 09:59:00 +0100
+@@ -1239,6 +1239,8 @@
+
+ /* Create result. */
+ cp = xmalloc (len + 1);
++ if (cp == NULL)
++ return NULL;
+ for (i = 0, j = 0; string[i]; i++)
+ switch (string[i])
+ {
+@@ -1879,6 +1881,7 @@
+ char *cmd = NULL;
+ int cmdlen;
+ int i, pos;
++ char *cp;
+
+ is->is_pipe = 1;
+
+@@ -1902,12 +1905,16 @@
+ {
+ case 's':
+ /* Expand cmd-buffer. */
+- cmdlen += strlen (fname);
+- cmd = xrealloc (cmd, cmdlen);
++ if ((cp = shell_escape (fname)) != NULL)
++ {
++ cmdlen += strlen (cp);
++ cmd = xrealloc (cmd, cmdlen);
+
+- /* Paste filename. */
+- strcpy (cmd + pos, fname);
+- pos += strlen (fname);
++ /* Paste filename. */
++ strcpy (cmd + pos, cp);
++ pos += strlen (cp);
++ free (cp);
++ }
+
+ i++;
+ break;
+@@ -1991,12 +1998,13 @@
+ if (is->bufpos >= is->data_in_buf)
+ {
+ /* At the EOF? */
+- if (is->nreads > 0 && is->data_in_buf < sizeof (is->buf))
++ if (is->nreads > 0 && is->data_in_buf < sizeof (is->buf)-1)
+ /* Yes. */
+ return EOF;
+
+ /* Read more data. */
+- is->data_in_buf = fread (is->buf, 1, sizeof (is->buf), is->fp);
++ memset (is->buf, 0, sizeof (is->buf));
++ is->data_in_buf = fread (is->buf, 1, sizeof (is->buf)-1, is->fp);
+ is->bufpos = 0;
+ is->nreads++;
+
+@@ -2116,3 +2124,36 @@
+ {
+ return buffer->len;
+ }
++
++/*
++ * Escapes the name of a file so that the shell groks it in 'single'
++ * quotation marks. The resulting pointer has to be free()ed when not
++ * longer used.
++*/
++char *
++shell_escape(const char *fn)
++{
++ size_t len = 0;
++ const char *inp;
++ char *retval, *outp;
++
++ for(inp = fn; *inp; ++inp)
++ switch(*inp)
++ {
++ case '\'': len += 4; break;
++ default: len += 1; break;
++ }
++
++ outp = retval = malloc(len + 1);
++ if(!outp)
++ return NULL; /* perhaps one should do better error handling here */
++ for(inp = fn; *inp; ++inp)
++ switch(*inp)
++ {
++ case '\'': *outp++ = '\''; *outp++ = '\\'; *outp++ = '\'', *outp++ =
'\''; break;
++ default: *outp++ = *inp; break;
++ }
++ *outp = 0;
++
++ return retval;
++}
+Index: states/main.c
+--- states/main.c.orig 2000-11-30 07:40:17 +0100
++++ states/main.c 2005-02-05 09:50:45 +0100
+@@ -202,6 +202,7 @@
+ #if HAVE_SETLOCALE
+ #if HAVE_LC_MESSAGES
+ setlocale (LC_MESSAGES, "");
++ setlocale (LC_CTYPE, "");
+ #endif
+ #endif
+ #if ENABLE_NLS
+Index: states/over.in
+--- states/over.in.orig 1997-03-19 11:24:49 +0100
++++ states/over.in 2005-02-05 09:50:45 +0100
+@@ -2,4 +2,4 @@
+
+ [EMAIL PROTECTED]@
+
+-enscript -E -p- --quiet --language=overstrike $* 2>&1 | less
++enscript -E -p- --quiet --language=overstrike "$@" 2>&1 | sensible-pager
+Index: afm/Makefile.in
+--- afm/Makefile.in.orig 2002-01-24 08:39:24 +0100
++++ afm/Makefile.in 2005-02-05 10:04:31 +0100
+@@ -227,10 +227,10 @@
+
+
+ install-data-local:
+- $(top_srcdir)/mkinstalldirs $(datadir)/enscript
+- $(top_srcdir)/mkinstalldirs $(datadir)/enscript/afm
++ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir)/enscript
++ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir)/enscript/afm
+ for f in $(EXTRA_DIST); do \
+- $(INSTALL_DATA) $(srcdir)/$$f $(datadir)/enscript/afm/$$f; \
++ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(datadir)/enscript/afm/$$f; \
+ done
+
+ uninstall-local:
+Index: lib/Makefile.in
+--- lib/Makefile.in.orig 2002-01-24 08:39:27 +0100
++++ lib/Makefile.in 2005-02-05 10:07:31 +0100
+@@ -254,15 +254,15 @@
+ all-local: enscript.cfg
+
+ install-data-local: enscript.cfg
+- $(top_srcdir)/mkinstalldirs $(sysconfdir)
+- if test -r $(sysconfdir)/enscript.cfg; then \
+- cp $(sysconfdir)/enscript.cfg $(sysconfdir)/enscript.cfg.old; \
++ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir)
++ if test -r $(DESTDIR)$(sysconfdir)/enscript.cfg; then \
++ cp $(DESTDIR)$(sysconfdir)/enscript.cfg
$(DESTDIR)$(sysconfdir)/enscript.cfg.old; \
+ else :; \
+ fi
+- $(INSTALL_DATA) enscript.cfg $(sysconfdir)/enscript.cfg
++ $(INSTALL_DATA) enscript.cfg $(DESTDIR)$(sysconfdir)/enscript.cfg
+
+ uninstall-local:
+- rm -f $(sysconfdir)/enscript.cfg
++ rm -f $(DESTDIR)$(sysconfdir)/enscript.cfg
+
+ enscript.cfg: $(srcdir)/enscript.cfg.in Makefile
+ sed '[EMAIL PROTECTED]@%$(datadir)%g; [EMAIL PROTECTED]@[EMAIL
PROTECTED]@%g; [EMAIL PROTECTED]@%$(bindir)%g; [EMAIL PROTECTED]@[EMAIL
PROTECTED]@%g; [EMAIL PROTECTED]@[EMAIL PROTECTED]@%g; [EMAIL PROTECTED]@[EMAIL
PROTECTED]@%g' \
+Index: states/hl/Makefile.in
+--- states/hl/Makefile.in.orig 2002-01-24 08:39:40 +0100
++++ states/hl/Makefile.in 2005-02-05 14:17:13 +0100
+@@ -234,14 +234,14 @@
+
+
+ install-data-local:
+- $(top_srcdir)/mkinstalldirs $(datadir)/enscript
+- $(top_srcdir)/mkinstalldirs $(datadir)/enscript/hl
++ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir)/enscript
++ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir)/enscript/hl
+ for f in $(states); do \
+- $(INSTALL_DATA) $(srcdir)/$$f $(datadir)/enscript/hl/$$f; \
++ $(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(datadir)/enscript/hl/$$f; \
+ done
+
+ uninstall-local:
+- rm -rf $(datadir)/enscript/hl
++ rm -rf $(DESTDIR)$(datadir)/enscript/hl
+
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/enscript/enscript.spec
============================================================================
$ cvs diff -u -r1.6 -r1.7 enscript.spec
--- openpkg-src/enscript/enscript.spec 1 Jan 2005 10:48:56 -0000
1.6
+++ openpkg-src/enscript/enscript.spec 5 Feb 2005 13:23:34 -0000
1.7
@@ -33,11 +33,12 @@
Class: PLUS
Group: Converter
License: GPL
-Version: 1.6.1
-Release: 20041011
+Version: 1.6.3
+Release: 20050205
# list of sources
-Source0: ftp://ftp.gnu.org/pub/gnu/enscript/enscript-%{version}.tar.gz
+Source0: http://people.ssh.fi/mtr/genscript/enscript-%{version}.tar.gz
+Patch0: enscript.patch
# build information
Prefix: %{l_prefix}
@@ -57,20 +58,15 @@
%track
prog enscript = {
+ comment = "rse: 1.6.4 slightly broken"
version = %{version}
- url = ftp://ftp.gnu.org/pub/gnu/enscript/
- regex = enscript-(__VER__)\.tar\.gz
+ url = http://www.iki.fi/mtr/genscript/
+ regex = enscript-(\d+\.6\.[5-9]|\d+\.[7-9]\.\d+)\.tar\.gz
}
%prep
%setup -q
- %{l_shtool} subst \
- -e 's;$(sysconfdir);$(DESTDIR)$(sysconfdir);g' \
- lib/Makefile.in
- %{l_shtool} subst \
- -e 's;mkinstalldirs $(datadir);mkinstalldirs $(DESTDIR)$(datadir);g'
\
- -e 's;enscript.st $(datadir);enscript.st $(DESTDIR)$(datadir);g' \
- states/Makefile.in
+ %patch -p0
%build
CC="%{l_cc}" \
@@ -89,6 +85,7 @@
AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT" \
DESTDIR=$RPM_BUILD_ROOT
strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
+ rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
%{l_files_std} \
'%config %{l_prefix}/etc/enscript/*'
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [email protected]