While I was running some tests in psql, trying to figure out how to change
the query string to handle any length, I discovered that under certain conditions, psql will core dump when handling long strings. Thus, the patch. It was caused by a buffer overrun, probably not noticeable in a lot of cases, but pretty noticeable in mine. Problem was caused by the fact that the length check is only performed after the check for a ; to get the end of the query and execute. Cheers... MikeA
This commit is contained in:
parent
a2bb39c738
commit
f96babac12
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.187 1999/07/19 21:06:19 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.188 1999/07/20 17:20:43 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -2705,7 +2705,8 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source)
|
|||||||
char hold_char = line[i + thislen];
|
char hold_char = line[i + thislen];
|
||||||
|
|
||||||
line[i + thislen] = '\0';
|
line[i + thislen] = '\0';
|
||||||
if (query_start[0] != '\0')
|
if ((query_start[0] != '\0') &&
|
||||||
|
(strlen(query) + strlen(query_start) <= MAX_QUERY_BUFFER))
|
||||||
{
|
{
|
||||||
if (query[0] != '\0')
|
if (query[0] != '\0')
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user