From: Tom Lane Date: Thu, 9 Jun 2005 20:01:16 +0000 (+0000) Subject: Defend against omitted paramLengths[] array in PQsendQueryParams. X-Git-Tag: REL8_1_0BETA1~606 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3ace84594e3626f12caddfe3a2efed1a2e2982ee;p=postgresql Defend against omitted paramLengths[] array in PQsendQueryParams. Per Volkan Yazici. --- diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index a8ef01ad0d..1a01a4c627 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.167 2005/04/29 13:42:21 momjian Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.168 2005/06/09 20:01:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -30,7 +30,7 @@ #endif /* keep this in same order as ExecStatusType in libpq-fe.h */ -char *const pgresStatus[] = { +char *const pgresStatus[] = { "PGRES_EMPTY_QUERY", "PGRES_COMMAND_OK", "PGRES_TUPLES_OK", @@ -960,7 +960,14 @@ PQsendQueryGuts(PGconn *conn, if (paramFormats && paramFormats[i] != 0) { /* binary parameter */ - nbytes = paramLengths[i]; + if (paramLengths) + nbytes = paramLengths[i]; + else + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("length must be given for binary parameter\n")); + goto sendFailed; + } } else { diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h index f7f379748b..8976d45e25 100644 --- a/src/interfaces/libpq/libpq-fe.h +++ b/src/interfaces/libpq/libpq-fe.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.116 2004/12/31 22:03:50 pgsql Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.117 2005/06/09 20:01:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -156,7 +156,7 @@ typedef struct _PQprintOpt char *fieldSep; /* field separator */ char *tableOpt; /* insert to HTML */ char *caption; /* HTML
*/ - char **fieldName; /* null terminated array of repalcement + char **fieldName; /* null terminated array of replacement * field names */ } PQprintOpt;