components/graphviz/patches/000-7aaddf5-buffer-overflow.patch
author david.comay@oracle.com
Fri, 09 Sep 2016 16:31:02 -0700
changeset 6878 252671ed151a
parent 6544 f3ddf1d33382
permissions -rw-r--r--
24617715 'mysql_storage_engine' option's help message could be improved
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6544
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     1
From 7aaddf52cd98589fb0c3ab72a393f8411838438a Mon Sep 17 00:00:00 2001
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     2
From: "Emden R. Gansner" <[email protected]>
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     3
Date: Fri, 4 Oct 2013 09:06:39 -0400
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     4
Subject: [PATCH] Fix buffer overflow problem when reporting a syntax error
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     5
 with a very long input line
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     6
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     7
---
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     8
 lib/cgraph/scan.l | 21 +++++++++++++++------
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
     9
 1 file changed, 15 insertions(+), 6 deletions(-)
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    10
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    11
diff --git a/lib/cgraph/scan.l b/lib/cgraph/scan.l
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    12
index 3cfde0f..2efd203 100644
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    13
--- a/lib/cgraph/scan.l
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    14
+++ b/lib/cgraph/scan.l
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    15
@@ -16,6 +16,7 @@
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    16
 %{
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    17
 #include <grammar.h>
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    18
 #include <cghdr.h>
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    19
+#include <agxbuf.h>
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    20
 #include <ctype.h>
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    21
 #define GRAPH_EOF_TOKEN		'@'		/* lex class must be defined below */
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    22
 	/* this is a workaround for linux flex */
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    23
@@ -191,13 +192,21 @@ ID		({NAME}|{NUMBER})
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    24
 %%
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    25
 void yyerror(char *str)
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    26
 {
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    27
+	unsigned char	xbuf[BUFSIZ];
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    28
 	char	buf[BUFSIZ];
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    29
-	if (InputFile)
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    30
-		sprintf(buf,"%s:%d: %s in line %d near '%s'\n",InputFile, line_num,
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    31
-			str,line_num,yytext);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    32
-	else
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    33
-		sprintf(buf," %s in line %d near '%s'\n", str,line_num,yytext);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    34
-	agerr(AGWARN,buf);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    35
+	agxbuf  xb;
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    36
+
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    37
+	agxbinit(&xb, BUFSIZ, xbuf);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    38
+	if (InputFile) {
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    39
+		agxbput (&xb, InputFile);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    40
+		agxbput (&xb, ": ");
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    41
+	}
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    42
+	sprintf(buf," %s in line %d near '", str,line_num);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    43
+	agxbput (&xb, buf);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    44
+	agxbput (&xb, yytext);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    45
+	agxbput (&xb,"'\n");
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    46
+	agerr(AGWARN,agxbuse(&xb));
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    47
+	agxbfree(&xb);
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    48
 }
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    49
 /* must be here to see flex's macro defns */
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    50
 void aglexeof() { unput(GRAPH_EOF_TOKEN); }
f3ddf1d33382 21465165 problem in UTILITY/GRAPHVIZ
Yiteng Zhang <yiteng.zhang@oracle.com>
parents:
diff changeset
    51