From 3ac9688ae80ec6bcbb9bdafa8ef30eadc8c6dd6e Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sun, 20 Sep 1998 03:18:43 +0000
Subject: [PATCH] I also noticed that pg_dump contains a copy of the same
 prompt_for_password code that psql does.  We fixed psql a month or two back
 to permit usernames and passwords longer than 8 characters. I propagated the
 same fix into pg_dump.

Tom Lane
---
 src/bin/pg_dump/common.c  | 22 ++++++++++++++++++++--
 src/bin/pg_dump/pg_dump.c | 23 +++++++++++++----------
 2 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c
index 62ba98793c1..c9a806f10a6 100644
--- a/src/bin/pg_dump/common.c
+++ b/src/bin/pg_dump/common.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.24 1998/09/01 04:33:43 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.25 1998/09/20 03:18:42 momjian Exp $
  *
  * Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
  *
@@ -116,7 +116,8 @@ findParentsByOid(TableInfo *tblinfo, int numTables,
 {
 	int			i,
 				j;
-	int			parentInd;
+	int			parentInd,
+				selfInd;
 	char	  **result;
 	int			numParents;
 
@@ -139,6 +140,16 @@ findParentsByOid(TableInfo *tblinfo, int numTables,
 			{
 				parentInd = findTableByOid(tblinfo, numTables,
 										   inhinfo[i].inhparent);
+				if (parentInd < 0)
+				{
+					selfInd = findTableByOid(tblinfo, numTables, oid);
+					fprintf(stderr,
+							"failed sanity check, parent oid %s of table %s (oid %s) was not found\n",
+							inhinfo[i].inhparent,
+							(selfInd >= 0) ? tblinfo[selfInd].relname : "",
+							oid);
+					exit(2);
+				}
 				result[j++] = tblinfo[parentInd].relname;
 			}
 		}
@@ -387,6 +398,13 @@ flagInhAttrs(TableInfo *tblinfo, int numTables,
 		{
 			parentInd = findTableByName(tblinfo, numTables,
 										tblinfo[i].parentRels[k]);
+			if (parentInd < 0)
+			{
+				/* shouldn't happen unless findParentsByOid is broken */
+				fprintf(stderr, "failed sanity check, table %s not found by flagInhAttrs\n",
+						tblinfo[i].parentRels[k]);
+				exit(2);
+			}
 			for (j = 0; j < tblinfo[i].numatts; j++)
 			{
 				if (strInArray(tblinfo[i].attnames[j],
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 746f2af2166..24f8c4e36ed 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -21,7 +21,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.84 1998/09/03 02:10:36 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.85 1998/09/20 03:18:43 momjian Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -472,6 +472,7 @@ dumpClasses(const TableInfo *tblinfo, const int numTables, FILE *fout,
 static void
 prompt_for_password(char *username, char *password)
 {
+	char		buf[512];
 	int			length;
 
 #ifdef HAVE_TERMIOS_H
@@ -481,13 +482,11 @@ prompt_for_password(char *username, char *password)
 #endif
 
 	printf("Username: ");
-	fgets(username, 9, stdin);
+	fgets(username, 100, stdin);
 	length = strlen(username);
 	/* skip rest of the line */
 	if (length > 0 && username[length - 1] != '\n')
 	{
-		static char buf[512];
-
 		do
 		{
 			fgets(buf, 512, stdin);
@@ -503,7 +502,7 @@ prompt_for_password(char *username, char *password)
 	t.c_lflag &= ~ECHO;
 	tcsetattr(0, TCSADRAIN, &t);
 #endif
-	fgets(password, 9, stdin);
+	fgets(password, 100, stdin);
 #ifdef HAVE_TERMIOS_H
 	tcsetattr(0, TCSADRAIN, &t_orig);
 #endif
@@ -512,8 +511,6 @@ prompt_for_password(char *username, char *password)
 	/* skip rest of the line */
 	if (length > 0 && password[length - 1] != '\n')
 	{
-		static char buf[512];
-
 		do
 		{
 			fgets(buf, 512, stdin);
@@ -541,8 +538,8 @@ main(int argc, char **argv)
 	int			numTables;
 	char		connect_string[512] = "";
 	char		tmp_string[128];
-	char		username[64];
-	char		password[64];
+	char		username[100];
+	char		password[100];
 	int			use_password = 0;
 
 	g_verbose = false;
@@ -2584,7 +2581,13 @@ dumpIndices(FILE *fout, IndInfo *indinfo, int numIndices,
 	for (i = 0; i < numIndices; i++)
 	{
 		tableInd = findTableByName(tblinfo, numTables,
-								   (indinfo[i].indrelname));
+								   indinfo[i].indrelname);
+		if (tableInd < 0)
+		{
+			fprintf(stderr, "failed sanity check, table %s was not found\n",
+					indinfo[i].indrelname);
+			exit(2);
+		}
 
 		if (strcmp(indinfo[i].indproc, "0") == 0)
 			funcname = NULL;
-- 
GitLab