From cf0d9ed59589e57e24a07e48c92969eb5e655acd Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Mon, 9 Jul 2012 11:56:19 +0000 Subject: dvi2tty: Avoid buffer overrun for long pathnames (detected by Ken Brown), and check all values returned by malloc() WIN32 MSVC lacks and requires git-svn-id: svn://tug.org/texlive/trunk@26959 c570f23f-e606-0410-a88d-b1316a301751 --- .../texk/dvi2tty/dvi2tty-5.3.4-PATCHES/ChangeLog | 9 +++ .../dvi2tty/dvi2tty-5.3.4-PATCHES/patch-05-win32 | 12 ++++ .../dvi2tty/dvi2tty-5.3.4-PATCHES/patch-06-malloc | 70 ++++++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-05-win32 create mode 100644 Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES/patch-06-malloc (limited to 'Build/source/texk/dvi2tty/dvi2tty-5.3.4-PATCHES') 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 + + * patch-05-win32 (new): WIN32 MSVC lacks and requires + . + + * patch-06-malloc (new): Avoid buffer overrun for long pathnames + (detected by Ken Brown ), + and check all values returned by malloc(). + 2012-04-26 Peter Breitenlohner * 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 + #include + #include +-#if defined(MSDOS) ++#if defined(MSDOS) || (defined(WIN32) && !defined(__MINGW32__)) + # include + #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)) -- cgit v1.2.3