components/groff/patches/grn-main.cpp.patch
author Rich Burridge <rich.burridge@oracle.com>
Mon, 19 Dec 2016 15:41:53 -0800
branchs11u3-sru
changeset 7509 5f98694fa5a6
parent 3706 bd45826ad92c
permissions -rw-r--r--
25216284 problem in UTILITY/TCSH
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3706
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     1
Prevent grn from core dumping when given more than 50 command lines
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     2
arguments (CR #17621259).
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     3
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     4
This fix is not currently in the latest groff sources, and has been passed
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     5
upstream.
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     6
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     7
--- groff-1.22.2/src/preproc/grn/main.cpp.orig	2014-01-23 16:54:20.488279600 -0800
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     8
+++ groff-1.22.2/src/preproc/grn/main.cpp	2014-01-23 16:58:22.672837243 -0800
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
     9
@@ -92,6 +92,8 @@
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    10
 extern POINT *PTInit();
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    11
 extern POINT *PTMakePoint(double x, double y, POINT **pplist);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    12
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    13
+#define INIT_FILE_SIZE 50  /* Initial size of array of files from cmd line. */
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    14
+#define FILE_SIZE_INCR 50  /* Amount to increase array of files by. */
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    15
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    16
 #define SUN_SCALEFACTOR 0.70
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    17
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    18
@@ -244,6 +246,25 @@
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    19
 }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    20
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    21
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    22
+/* Add a new file entry in the array, expanding array if needs be. */
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    23
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    24
+char **
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    25
+add_file(char **file, char *new_file, int *count, int *cur_size)
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    26
+{
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    27
+  if (*count >= *cur_size) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    28
+    *cur_size += FILE_SIZE_INCR;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    29
+    file = (char **) realloc((char **) file, *cur_size * sizeof(char *));
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    30
+    if (file == NULL) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    31
+      fatal("unable to extend file array");
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    32
+    }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    33
+  }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    34
+  file[*count] = new_file;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    35
+  *count += 1;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    36
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    37
+  return file;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    38
+}
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    39
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    40
+
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    41
 /*----------------------------------------------------------------------------*
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    42
  | Routine:	main (argument_count, argument_pointer)
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    43
  |
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    44
@@ -262,18 +283,22 @@
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    45
   register FILE *fp;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    46
   register int k;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    47
   register char c;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    48
-  register int gfil = 0;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    49
-  char *file[50];
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    50
+  int gfil = 0;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    51
+  char **file = NULL;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    52
+  int file_cur_size = INIT_FILE_SIZE;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    53
   char *operand(int *argcp, char ***argvp);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    54
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    55
+  if ((file = (char **) malloc(file_cur_size * sizeof(char *))) == NULL) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    56
+    fatal("unable to create file array");
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    57
+  }
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    58
   while (--argc) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    59
     if (**++argv != '-')
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    60
-      file[gfil++] = *argv;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    61
+      file = add_file(file, *argv, &gfil, &file_cur_size);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    62
     else
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    63
       switch (c = (*argv)[1]) {
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    64
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    65
       case 0:
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    66
-	file[gfil++] = NULL;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    67
+	file = add_file(file, NULL, &gfil, &file_cur_size);
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    68
 	break;
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    69
 
bd45826ad92c PSARC 2013/394 groff version 1.22.2
osayama <osamu.sayama@oracle.com>
parents:
diff changeset
    70
       case 'C':		/* compatibility mode */