]> granicus.if.org Git - postgresql/commitdiff
Backport fix for parsing acls (didn't correctly interpret null acl to mean
authorBarry Lind <barry@xythos.com>
Mon, 24 Mar 2003 03:49:49 +0000 (03:49 +0000)
committerBarry Lind <barry@xythos.com>
Mon, 24 Mar 2003 03:49:49 +0000 (03:49 +0000)
table owner has privs)
 Modified Files:
  Tag: REL7_3_STABLE
  jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java

src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java

index a8f3b50e176f0af5f2134b46dc2ad5864e7aea49..a80b327d160acc65499399c256587a85ddab0a38 100644 (file)
@@ -2464,7 +2464,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                        byte column[] = rs.getBytes("attname");
                        String owner = rs.getString("usename");
                        String acl = rs.getString("relacl");
-                       Hashtable permissions = parseACL(acl);
+                       Hashtable permissions = parseACL(acl, owner);
                        String permNames[] = new String[permissions.size()];
                        Enumeration e = permissions.keys();
                        int i=0;
@@ -2566,7 +2566,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
                        byte table[] = rs.getBytes("relname");
                        String owner = rs.getString("usename");
                        String acl = rs.getString("relacl");
-                       Hashtable permissions = parseACL(acl);
+                       Hashtable permissions = parseACL(acl, owner);
                        String permNames[] = new String[permissions.size()];
                        Enumeration e = permissions.keys();
                        int i=0;
@@ -2690,7 +2690,11 @@ public abstract class AbstractJdbc1DatabaseMetaData
         * a Hashtable mapping the SQL permission name to a Vector of
         * usernames who have that permission.
         */
-       protected Hashtable parseACL(String aclArray) {
+       protected Hashtable parseACL(String aclArray, String owner) {
+               if (aclArray == null || aclArray == "") {
+                       //null acl is a shortcut for owner having full privs
+                       aclArray = "{" + owner + "=arwdRxt}";
+               }
                Vector acls = parseACLArray(aclArray);
                Hashtable privileges = new Hashtable();
                for (int i=0; i<acls.size(); i++) {