mirror of
https://github.com/postgres/postgres.git
synced 2025-11-22 12:22:45 +03:00
Change addlit() to not assume its input is null-terminated, so that we
don't have more bugs like the quote-quote-quote-quote one. Propagate fix into ecpg lexer, too.
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.79 2001/06/13 12:38:58 meskes Exp $
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.80 2001/09/07 23:17:14 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -35,6 +35,8 @@
|
||||
|
||||
extern YYSTYPE yylval;
|
||||
|
||||
static int xcdepth = 0; /* depth of nesting in slash-star comments */
|
||||
|
||||
/*
|
||||
* literalbuf is used to accumulate literal values when multiple rules
|
||||
* are needed to parse a single literal. Call startlit to reset buffer
|
||||
@@ -45,8 +47,6 @@ static char *literalbuf = NULL; /* expandable buffer */
|
||||
static int literallen; /* actual current length */
|
||||
static int literalalloc; /* current allocated buffer size */
|
||||
|
||||
static int xcdepth = 0;
|
||||
|
||||
#define startlit() (literalbuf[0] = '\0', literallen = 0)
|
||||
static void addlit(char *ytext, int yleng);
|
||||
|
||||
@@ -923,9 +923,10 @@ addlit(char *ytext, int yleng)
|
||||
} while ((literallen+yleng) >= literalalloc);
|
||||
literalbuf = (char *) realloc(literalbuf, literalalloc);
|
||||
}
|
||||
/* append data --- note we assume ytext is null-terminated */
|
||||
memcpy(literalbuf+literallen, ytext, yleng+1);
|
||||
/* append new data, add trailing null */
|
||||
memcpy(literalbuf+literallen, ytext, yleng);
|
||||
literallen += yleng;
|
||||
literalbuf[literallen] = '\0';
|
||||
}
|
||||
|
||||
int yywrap(void)
|
||||
|
||||
Reference in New Issue
Block a user