This is an automated email from the ASF dual-hosted git repository. ardovm pushed a commit to branch AOO41X in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit c04e8dea6dace76db38280a41258735c125f5e20 Author: Jim Jagielski <[email protected]> AuthorDate: Thu Dec 3 08:40:55 2020 -0500 Use of strcpy is problematic esp when we don't check bounds. Ugg. Instead use memmove(); Increase buffer sizes due to larger requirements. (cherry picked from commit c56f8ff52acab2e8b128306b12cd162fb5915913) --- main/soltools/mkdepend/cppsetup.c | 2 +- main/soltools/mkdepend/def.h | 5 +++-- main/soltools/mkdepend/main.c | 9 +++++---- main/soltools/mkdepend/parse.c | 6 +++++- main/soltools/mkdepend/pr.c | 2 +- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/main/soltools/mkdepend/cppsetup.c b/main/soltools/mkdepend/cppsetup.c index 810f6b9168..131f8898ef 100644 --- a/main/soltools/mkdepend/cppsetup.c +++ b/main/soltools/mkdepend/cppsetup.c @@ -150,7 +150,7 @@ _my_if_errors (ip, cp, expecting) } -#define MAXNAMELEN 256 +#define MAXNAMELEN 1024 char * _lookup_variable (var, len) diff --git a/main/soltools/mkdepend/def.h b/main/soltools/mkdepend/def.h index 1217c6c4ab..07a59411fe 100644 --- a/main/soltools/mkdepend/def.h +++ b/main/soltools/mkdepend/def.h @@ -59,11 +59,12 @@ in this Software without prior written authorization from the X Consortium. #define S_IFREG 0100000 #endif -#define MAXDEFINES 512 +#define MAXDEFINES 2048 #define MAXFILES ( 1<<16 ) /* Increased from 512. -mcafee */ /* Increased from 1024. -mh */ /* Increased from 2048. -b_michaelsen */ -#define MAXDIRS 64 +#define MAXDIRS 128 +#define OURBUFSIZ ( 1<<16 ) #define SYMHASHSEED 131 /* 131 1313 13131 ... */ #define SYMHASHMEMBERS 64 /* must be 2^x to work right */ #define TRUE 1 diff --git a/main/soltools/mkdepend/main.c b/main/soltools/mkdepend/main.c index 08d0391b1f..bcbcec145c 100644 --- a/main/soltools/mkdepend/main.c +++ b/main/soltools/mkdepend/main.c @@ -140,6 +140,7 @@ catch (sig) int sig; { fflush (stdout); + abort(); fatalerr ("got signal %d\n", sig); } @@ -659,8 +660,8 @@ void redirect(line, makefile) { struct stat st; FILE *fdin, *fdout; - char backup[ BUFSIZ ], - buf[ BUFSIZ ]; + char backup[ OURBUFSIZ ], + buf[ OURBUFSIZ ]; boolean found = FALSE; int len; @@ -699,7 +700,7 @@ void redirect(line, makefile) if ((fdout = freopen(makefile, "w", stdout)) == NULL) fatalerr("cannot open \"%s\"\n", backup); len = strlen(line); - while (!found && fgets(buf, BUFSIZ, fdin)) { + while (!found && fgets(buf, OURBUFSIZ, fdin)) { if (*buf == '#' && strncmp(line, buf, len) == 0) found = TRUE; fputs(buf, fdout); @@ -710,7 +711,7 @@ void redirect(line, makefile) line); puts(line); /* same as fputs(fdout); but with newline */ } else if (append) { - while (fgets(buf, BUFSIZ, fdin)) { + while (fgets(buf, OURBUFSIZ, fdin)) { fputs(buf, fdout); } } diff --git a/main/soltools/mkdepend/parse.c b/main/soltools/mkdepend/parse.c index f27a04e102..5f60f730bc 100644 --- a/main/soltools/mkdepend/parse.c +++ b/main/soltools/mkdepend/parse.c @@ -346,7 +346,11 @@ int deftype (line, filep, file_red, file, parse_it, symbols) /* * copy the definition back to the beginning of the line. */ - strcpy (line, p); + { + int len = strlen(line); + memmove (line, p, len); + line[len] = '\0'; + } break; case ELSE: case ENDIF: diff --git a/main/soltools/mkdepend/pr.c b/main/soltools/mkdepend/pr.c index 2c4731e42b..ac0f994448 100644 --- a/main/soltools/mkdepend/pr.c +++ b/main/soltools/mkdepend/pr.c @@ -107,7 +107,7 @@ void pr(ip, file, base) static char *lastfile; static int current_len; register int len, i; - char buf[ BUFSIZ ]; + char buf[ OURBUFSIZ ]; printed = TRUE; len = strlen(ip->i_file)+1;
