]> granicus.if.org Git - postgresql/commitdiff
From: PostgreSQL DataBase <postgres@scuba.pcpipeline.com>
authorMarc G. Fournier <scrappy@hub.org>
Fri, 30 Jan 1998 15:03:35 +0000 (15:03 +0000)
committerMarc G. Fournier <scrappy@hub.org>
Fri, 30 Jan 1998 15:03:35 +0000 (15:03 +0000)
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

index 8dd8ef28cb767340838687745d14f37178a7b32a..6b2b718c107d3e5380602ed294684e2eac3ebb8e 100644 (file)
@@ -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);
                                }
                        }
                }