From: Raymond Toy
authorMarc G. Fournier
Thu, 17 Apr 1997 20:38:26 +0000 (20:38 +0000)
committerMarc G. Fournier
Thu, 17 Apr 1997 20:38:26 +0000 (20:38 +0000)
Subject: [PATCHES] 970417:  two more patches for large objects

Here are two more patches:

        1.  pg_getint doesn't properly set the status flag when
            calling pqGetShort or pqGetLong.  This is required when
            accessing large objects via libpq.  This, combined with
            problem 1 above causes postgres to crash when postgres
            tries to print out the message that the status was not
            good.

        2.  ExceptionalCondition crashes when called with detail =
            NULL.  This patch prevents dereferencing the NULL.

src/backend/libpq/pqcomm.c
src/backend/utils/error/assert.c

index dcd99cbe1b403663ae9b6655419926cbecc41232..c0fa810e37968cc4b93e55c72a74c017631d05a1 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.15 1997/04/16 06:25:13 vadim Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.16 1997/04/17 20:38:16 scrappy Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -303,10 +303,10 @@ pq_getint(int b)
            status = ((n = fgetc(Pfin)) == EOF);
            break;
        case 2:
-           pqGetShort(&n, Pfin);
+       status = pqGetShort(&n, Pfin);
            break;
        case 4:
-           pqGetLong(&n, Pfin);
+           status = pqGetLong(&n, Pfin);
            break;
        default:
            fprintf(stderr, "** Unsupported size %d\n", b);
index bdc4f0b0e3998c9e58bedaff1d36cfa8f3b84663..4fb99ced1b97d58262c575407a02afa8f8103b38 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/utils/error/assert.c,v 1.3 1996/11/11 11:49:40 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/utils/error/assert.c,v 1.4 1997/04/17 20:38:26 scrappy Exp $
  *
  * NOTE
  *    This should eventually work with elog(), dlog(), etc.
@@ -46,7 +46,7 @@ ExceptionalCondition(char* conditionName,
     } else {
    fprintf(stderr,
        "%s(\"%s:%s\", File: \"%s\", Line: %d)\n",
-       exceptionP->message, conditionName, detail,
+       exceptionP->message, conditionName, detail == NULL ? "" : detail,
        fileName, lineNumber);
     }