mirror of
https://github.com/postgres/postgres.git
synced 2025-11-28 11:44:57 +03:00
Backport fix for parsing acls (didn't correctly interpret null acl to mean
table owner has privs) Modified Files: Tag: REL7_3_STABLE jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
This commit is contained in:
@@ -2464,7 +2464,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
|
|||||||
byte column[] = rs.getBytes("attname");
|
byte column[] = rs.getBytes("attname");
|
||||||
String owner = rs.getString("usename");
|
String owner = rs.getString("usename");
|
||||||
String acl = rs.getString("relacl");
|
String acl = rs.getString("relacl");
|
||||||
Hashtable permissions = parseACL(acl);
|
Hashtable permissions = parseACL(acl, owner);
|
||||||
String permNames[] = new String[permissions.size()];
|
String permNames[] = new String[permissions.size()];
|
||||||
Enumeration e = permissions.keys();
|
Enumeration e = permissions.keys();
|
||||||
int i=0;
|
int i=0;
|
||||||
@@ -2566,7 +2566,7 @@ public abstract class AbstractJdbc1DatabaseMetaData
|
|||||||
byte table[] = rs.getBytes("relname");
|
byte table[] = rs.getBytes("relname");
|
||||||
String owner = rs.getString("usename");
|
String owner = rs.getString("usename");
|
||||||
String acl = rs.getString("relacl");
|
String acl = rs.getString("relacl");
|
||||||
Hashtable permissions = parseACL(acl);
|
Hashtable permissions = parseACL(acl, owner);
|
||||||
String permNames[] = new String[permissions.size()];
|
String permNames[] = new String[permissions.size()];
|
||||||
Enumeration e = permissions.keys();
|
Enumeration e = permissions.keys();
|
||||||
int i=0;
|
int i=0;
|
||||||
@@ -2690,7 +2690,11 @@ public abstract class AbstractJdbc1DatabaseMetaData
|
|||||||
* a Hashtable mapping the SQL permission name to a Vector of
|
* a Hashtable mapping the SQL permission name to a Vector of
|
||||||
* usernames who have that permission.
|
* 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);
|
Vector acls = parseACLArray(aclArray);
|
||||||
Hashtable privileges = new Hashtable();
|
Hashtable privileges = new Hashtable();
|
||||||
for (int i=0; i<acls.size(); i++) {
|
for (int i=0; i<acls.size(); i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user