Sent from my iPhone
> On Dec 3, 2020, at 5:43 AM, j...@apache.org wrote:
>
> 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 <jim...@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.
>
> (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';
Shouldn’t this be:
p[len] = ‘\0’;
Or memove len+1
Regards,
Dave
> + }
> 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;
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
For additional commands, e-mail: dev-h...@openoffice.apache.org