]> granicus.if.org Git - postgresql/commitdiff
From: James Hughes <jamesh@interpath.com>
authorMarc G. Fournier <scrappy@hub.org>
Fri, 23 Jan 1998 19:22:24 +0000 (19:22 +0000)
committerMarc G. Fournier <scrappy@hub.org>
Fri, 23 Jan 1998 19:22:24 +0000 (19:22 +0000)
This is a patch to fix crashes in psql when executing queries from
an external file. The code also adds error checking to verify that
memory for "query" was allocated. The conditional for the block of
code was changed from "query == NULL" to "query_alloced == false".

The conditional, "query == NULL", was never true. This prevented
the memory being allocated for "query". A few lines later, an attempt
to write to an un-allocated memory area generated a SIGSEGV causing
the frontend to crash.

src/bin/psql/psql.c

index 939ae237797391f7749bd974c49c90202038bfbe..ab519b4143c8b220f1990c4439ab7a7dd95bdfee 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.128 1998/01/23 19:21:11 scrappy Exp $
+ *       $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.129 1998/01/23 19:22:24 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2093,10 +2093,15 @@ MainLoop(PsqlSettings *pset, char *query, FILE *source)
        int                     paren_level;
        char       *query_start;
 
-       if (query == NULL)
+       if (query_alloced == false)
        {
-               query = malloc(MAX_QUERY_BUFFER);
-               query_alloced = true;
+               if((query = malloc(MAX_QUERY_BUFFER)) == NULL) {
+       
+                       perror("Memory Allocation Failed");
+
+               } else {
+                       query_alloced = true;
+               }
        }
 
        interactive = ((source == stdin) && !pset->notty);