You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ji...@apache.org on 2020/12/03 13:42:01 UTC

[openoffice] branch AOO42X updated: Use of strcpy is problematic esp when we don't check bounds. Ugg. Instead use memmove(); Increase buffer sizes due to larger requirements.

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

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


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

commit c56f8ff52acab2e8b128306b12cd162fb5915913
Author: Jim Jagielski <ji...@gmail.com>
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.
---
 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;