This is an automated email from the ASF dual-hosted git repository.

jim pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/openoffice.git


The following commit(s) were added to refs/heads/trunk by this push:
     new e932034  Use of strcpy is problematic esp when we don't check bounds. 
Ugg. Instead use memmove(); Increase buffer sizes due to larger requirements.
e932034 is described below

commit e932034bf45507ae970bfd7165fb7b2a983ba40d
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 810f6b9..131f889 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 1217c6c..07a5941 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 8082214..fc9aecc 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 f27a04e..5f60f73 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 2c4731e..ac0f994 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;

Reply via email to