From 2df6bba3ca3343f8ed8283f0974e5c0089280cba Mon Sep 17 00:00:00 2001
From: "Marc G. Fournier" <scrappy@hub.org>
Date: Fri, 30 Jan 1998 15:03:35 +0000
Subject: [PATCH] From: PostgreSQL DataBase <postgres@scuba.pcpipeline.com>

This again fixes the problem
with the default permissions for PUBLIC and the preventing of
statements like "GRANT null on test to test_user;".
---
 src/bin/pg_dump/pg_dump.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 8dd8ef28cb7..6b2b718c107 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.61 1998/01/29 02:26:25 scrappy Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.62 1998/01/30 15:03:35 scrappy Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -2481,11 +2481,26 @@ dumpTables(FILE *fout, TableInfo *tblinfo, int numTables,
 			
 			if (acls) {
 				ACLlist = ParseACL(tblinfo[i].relacl, &l);
+				if (ACLlist == (ACL *)NULL)
+					if (l == 0)
+						continue;
+					else {
+						fprintf(stderr,"Could not parse ACL list for %s...Exiting!\n",
+							tblinfo[i].relname);
+						exit_nicely(g_conn);
+						}
+
+				/* Revoke Default permissions for PUBLIC */
+				fprintf(fout,
+					"REVOKE ALL on %s from PUBLIC;\n",
+						tblinfo[i].relname);
+
 				for(k = 0; k < l; k++) {
-					fprintf(fout,
-							"GRANT %s on %s to %s;\n",
-							ACLlist[k].privledges, tblinfo[i].relname,
-							ACLlist[k].user);
+					if (ACLlist[k].privledges != (char *)NULL)
+						fprintf(fout,
+								"GRANT %s on %s to %s;\n",
+								ACLlist[k].privledges, tblinfo[i].relname,
+								ACLlist[k].user);
 				}
 			}
 		}
-- 
GitLab