diff options
Diffstat (limited to 'Build/source/texk/lacheck/lacheck-1.26-PATCHES/patch-06-buffer-overrun')
-rw-r--r-- | Build/source/texk/lacheck/lacheck-1.26-PATCHES/patch-06-buffer-overrun | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/Build/source/texk/lacheck/lacheck-1.26-PATCHES/patch-06-buffer-overrun b/Build/source/texk/lacheck/lacheck-1.26-PATCHES/patch-06-buffer-overrun new file mode 100644 index 00000000000..1386c338f33 --- /dev/null +++ b/Build/source/texk/lacheck/lacheck-1.26-PATCHES/patch-06-buffer-overrun @@ -0,0 +1,144 @@ +diff -ur lacheck-1.26.orig/lacheck.l lacheck-1.26/lacheck.l +--- lacheck-1.26.orig/lacheck.l 2012-06-19 15:11:14.000000000 +0200 ++++ lacheck-1.26/lacheck.l 2012-06-22 11:04:33.000000000 +0200 +@@ -144,7 +144,6 @@ + #define CG_ITALIC gstack[gstackp-1].italic + #define CG_FILE gstack[gstackp-1].s_file + +-char *bg_command(char *name); + void pop(void); + void push(const char *p_name, int p_type, int p_line); + void linecount(void); +@@ -157,7 +156,6 @@ + + /* global variables */ + +-char returnval[100]; + int line_count = 1; + int warn_count = 0; + char *file_name; +@@ -962,72 +960,58 @@ + free(gstack[gstackp].s_file); + } + +-char *bg_command(char *name) ++static void print_bg_command(char *name) + { + + switch (CG_TYPE) { + + case 2: +- (void) strcpy( returnval, "\\begin{" ); +- (void) strcat( returnval, (char *) name); +- (void) strcat( returnval, "}" ); ++ printf("\\begin{%s}", name); + break; + + case 3: +- (void) strcpy( returnval, "beginning of file " ); +- (void) strcat( returnval, (char *) name); ++ printf("beginning of file %s", name); + break; + + case 4: +- (void) strcpy( returnval, "math begin " ); +- (void) strcat( returnval, (char *) name); ++ printf("math begin %s", name); + break; + + case 5: +- (void) strcpy( returnval, "display math begin " ); +- (void) strcat( returnval, (char *) name); ++ printf("display math begin %s", name); + break; + + default: +- (void) strcpy( returnval, name ); ++ printf("%s", name); + + } +- +- return ((char *)returnval); + } + +-static char *eg_command(char *name, int type) ++static void print_eg_command(char *name, int type) + { + + switch (type) { + + case 2: +- (void) strcpy( returnval, "\\end{" ); +- (void) strcat( returnval, (char *) name); +- (void) strcat( returnval, "}" ); ++ printf("\\end{%s}", name); + break; + + case 3: +- (void) strcpy( returnval, "end of file " ); +- (void) strcat( returnval, (char *) name); ++ printf("end of file %s", name); + break; + + case 4: +- (void) strcpy( returnval, "math end " ); +- (void) strcat( returnval, (char *) name); ++ printf("math end %s", name); + break; + + case 5: +- (void) strcpy( returnval, "display math end " ); +- (void) strcat( returnval, (char *) name); ++ printf("display math end %s", name); + break; + + default: +- (void) strcpy( returnval, name ); ++ printf("%s", name); + break; + } +- +- return ((char *)returnval); + } + + +@@ -1072,15 +1056,17 @@ + + void print_bad_match(char *end_command, int type) + { +- printf("\"%s\", line %d: <- unmatched \"%s\"\n", ++ printf("\"%s\", line %d: <- unmatched \"", + file_name, +- line_count, +- eg_command( end_command , type) ) ; ++ line_count); ++ print_eg_command(end_command, type); ++ printf("\"\n"); + +- printf("\"%s\", line %d: -> unmatched \"%s\"\n", ++ printf("\"%s\", line %d: -> unmatched \"", + CG_FILE, +- CG_LINE, +- bg_command( CG_NAME ) ) ; ++ CG_LINE); ++ print_bg_command(CG_NAME); ++ printf("\"\n"); + warn_count += 2; + } + +@@ -1088,10 +1074,11 @@ + { + if ( gstackp == 0 ) + { +- printf("\"%s\", line %d: \"%s\" found at top level\n", +- file_name, +- line_count, +- eg_command( end_command, type )) ; ++ printf("\"%s\", line %d: \"", ++ file_name, ++ line_count); ++ print_eg_command(end_command, type); ++ printf("\" found at top level\n"); + ++warn_count; + return(0); + } |