summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2012-07-09 11:56:19 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2012-07-09 11:56:19 +0000
commitcf0d9ed59589e57e24a07e48c92969eb5e655acd (patch)
tree9b3aae7c2bb33de69bb146be7d9a7b3c8b7db9cc /Build
parent05e50d2756c148a33a3a06a28ae32d677fb05cc1 (diff)
dvi2tty: Avoid buffer overrun for long pathnames (detected by Ken Brown),
and check all values returned by malloc() WIN32 MSVC lacks <unistd.h> and requires <malloc.h> git-svn-id: svn://tug.org/texlive/trunk@26959 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/ChangeLog9
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-05-win3212
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-06-malloc70
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-5.3.4/disdvi.c5
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.c17
-rw-r--r--Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.h2
6 files changed, 109 insertions, 6 deletions
diff --git a/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/ChangeLog b/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/ChangeLog
index badddbbbef7..562fde34068 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/ChangeLog
+++ b/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/ChangeLog
@@ -1,3 +1,12 @@
+2012-06-22 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-05-win32 (new): WIN32 MSVC lacks <unistd.h> and requires
+ <malloc.h>.
+
+ * patch-06-malloc (new): Avoid buffer overrun for long pathnames
+ (detected by Ken Brown <kbrow1i@gmail.com>),
+ and check all values returned by malloc().
+
2012-04-26 Peter Breitenlohner <peb@mppmu.mpg.de>
* patch-04-OpenSolaris: New patch:
diff --git a/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-05-win32 b/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-05-win32
new file mode 100644
index 00000000000..bf51b4889c2
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-05-win32
@@ -0,0 +1,12 @@
+diff -ur dvi2tty-5.3.4.orig/dvi2tty.h dvi2tty-5.3.4/dvi2tty.h
+--- dvi2tty-5.3.4.orig/dvi2tty.h 2011-11-21 22:28:42.000000000 +0100
++++ dvi2tty-5.3.4/dvi2tty.h 2012-06-22 09:09:35.000000000 +0200
+@@ -28,7 +28,7 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#if defined(MSDOS)
++#if defined(MSDOS) || (defined(WIN32) && !defined(__MINGW32__))
+ # include <malloc.h>
+ #else
+ # if !defined(THINK_C)
diff --git a/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-06-malloc b/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-06-malloc
new file mode 100644
index 00000000000..6933dc4514b
--- /dev/null
+++ b/Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-06-malloc
@@ -0,0 +1,70 @@
+diff -ur dvi2tty-5.3.4.orig/disdvi.c dvi2tty-5.3.4/disdvi.c
+--- dvi2tty-5.3.4.orig/disdvi.c 2010-11-13 16:31:14.000000000 +0100
++++ dvi2tty-5.3.4/disdvi.c 2012-06-22 09:12:43.000000000 +0200
+@@ -193,7 +193,10 @@
+ if ((i >= 5) && (!strcmp(*argv+i-4, dvi_ext)))
+ dvi_name = *argv;
+ else {
+- dvi_name = malloc((i+5) * sizeof(char));
++ if ((dvi_name = malloc((i+5) * sizeof(char))) == NULL) {
++ perror("dvi_name");
++ exit(1);
++ }
+ strcpy(dvi_name, *argv);
+ strcat(dvi_name, dvi_ext);
+ }
+diff -ur dvi2tty-5.3.4.orig/dvi2tty.c dvi2tty-5.3.4/dvi2tty.c
+--- dvi2tty-5.3.4.orig/dvi2tty.c 2011-11-21 22:30:24.000000000 +0100
++++ dvi2tty-5.3.4/dvi2tty.c 2012-06-22 10:12:43.000000000 +0200
+@@ -53,7 +53,6 @@
+
+ /*------------------ end of customization constants ---------------------*/
+
+-#define MAXLEN 100 /* size of char-arrays for strings */
+ #if defined(MSDOS) || defined(VMS) || defined(AMIGA)
+ #define OPTSET "haJweEpPousltvbcANU" /* legal options */
+ #define OPTWARG "weEpPovb" /* options with argument */
+@@ -109,7 +108,7 @@
+ char * progname; /* our name */
+ int Argc;
+ char ** Argv;
+-char DVIfilename[MAXLEN];
++char * DVIfilename;
+ const char * OUTfilename;
+ char optch; /* for option handling */
+
+@@ -483,7 +482,10 @@
+ int num;
+
+ pageswitchon = TRUE;
+- firstpage = (printlisttype *) malloc(sizeof(printlisttype));
++ if ((firstpage = (printlisttype *) malloc(sizeof(printlisttype))) == NULL) {
++ perror("firstpage");
++ exit(1);
++ }
+ firstpage->all = FALSE;
+ firstpage->nxt = nil;
+ firstpage->pag = 0;
+@@ -543,7 +545,10 @@
+
+ currentpage = lastpage;
+ currentpage->pag = pagnr;
+- lastpage = (printlisttype *) malloc(sizeof(printlisttype));
++ if ((lastpage = (printlisttype *) malloc(sizeof(printlisttype))) == NULL) {
++ perror("lastpage");
++ exit(1);
++ }
+ lastpage->all = FALSE;
+ lastpage->nxt = nil;
+ lastpage->pag = 0;
+@@ -566,6 +571,10 @@
+ i = strlen(str);
+ if (i == 0)
+ usage(ign);
++ if ((DVIfilename = (char *) malloc(i+5)) == NULL) {
++ perror("DVIfilename");
++ exit(1);
++ }
+ strcpy(DVIfilename, str);
+ #ifdef KPATHSEA
+ if (!kpse_readable_file(DVIfilename))
diff --git a/Build/source/texk/dvi2tty/dvi2tty-5.3.4/disdvi.c b/Build/source/texk/dvi2tty/dvi2tty-5.3.4/disdvi.c
index b6c8743384d..43403e0f339 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-5.3.4/disdvi.c
+++ b/Build/source/texk/dvi2tty/dvi2tty-5.3.4/disdvi.c
@@ -193,7 +193,10 @@ int main(int argc, char **argv)
if ((i >= 5) && (!strcmp(*argv+i-4, dvi_ext)))
dvi_name = *argv;
else {
- dvi_name = malloc((i+5) * sizeof(char));
+ if ((dvi_name = malloc((i+5) * sizeof(char))) == NULL) {
+ perror("dvi_name");
+ exit(1);
+ }
strcpy(dvi_name, *argv);
strcat(dvi_name, dvi_ext);
}
diff --git a/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.c b/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.c
index a77000c5c0a..54eac225c97 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.c
+++ b/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.c
@@ -53,7 +53,6 @@
/*------------------ end of customization constants ---------------------*/
-#define MAXLEN 100 /* size of char-arrays for strings */
#if defined(MSDOS) || defined(VMS) || defined(AMIGA)
#define OPTSET "haJweEpPousltvbcANU" /* legal options */
#define OPTWARG "weEpPovb" /* options with argument */
@@ -109,7 +108,7 @@ const char * path; /* name of the pager to run */
char * progname; /* our name */
int Argc;
char ** Argv;
-char DVIfilename[MAXLEN];
+char * DVIfilename;
const char * OUTfilename;
char optch; /* for option handling */
@@ -483,7 +482,10 @@ void getpages(int j, const char *str)
int num;
pageswitchon = TRUE;
- firstpage = (printlisttype *) malloc(sizeof(printlisttype));
+ if ((firstpage = (printlisttype *) malloc(sizeof(printlisttype))) == NULL) {
+ perror("firstpage");
+ exit(1);
+ }
firstpage->all = FALSE;
firstpage->nxt = nil;
firstpage->pag = 0;
@@ -543,7 +545,10 @@ void plcnxt(int pagnr)
currentpage = lastpage;
currentpage->pag = pagnr;
- lastpage = (printlisttype *) malloc(sizeof(printlisttype));
+ if ((lastpage = (printlisttype *) malloc(sizeof(printlisttype))) == NULL) {
+ perror("lastpage");
+ exit(1);
+ }
lastpage->all = FALSE;
lastpage->nxt = nil;
lastpage->pag = 0;
@@ -566,6 +571,10 @@ void getfname(const char *str)
i = strlen(str);
if (i == 0)
usage(ign);
+ if ((DVIfilename = (char *) malloc(i+5)) == NULL) {
+ perror("DVIfilename");
+ exit(1);
+ }
strcpy(DVIfilename, str);
#ifdef KPATHSEA
if (!kpse_readable_file(DVIfilename))
diff --git a/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.h b/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.h
index 924c467c725..21825f95db3 100644
--- a/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.h
+++ b/Build/source/texk/dvi2tty/dvi2tty-5.3.4/dvi2tty.h
@@ -28,7 +28,7 @@ Copyright (C) 1989-2010 M.J.E. Mol, MESA Consulting B.V."
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
-#if defined(MSDOS)
+#if defined(MSDOS) || (defined(WIN32) && !defined(__MINGW32__))
# include <malloc.h>
#else
# if !defined(THINK_C)