summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane2001-01-14 19:23:27 +0000
committerTom Lane2001-01-14 19:23:27 +0000
commitc0f069944f0c9f2fad33b3b6da610dce8fde4ff4 (patch)
tree027c7ad21a3f848b9e68e491d85c4621378f07b1 /src
parent36839c192706f5abd75bdcb02b6a7cace14ce108 (diff)
Make aclcontains() do something that's at least vaguely reasonable:
it now returns true if the aclitem argument exactly matches any one of the elements of the aclitem[] argument. Per complaint from Wolff 1/10/01.
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/acl.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index 1a505ccaddd..889fb5b224b 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.55 2000/12/03 20:45:35 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.56 2001/01/14 19:23:27 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -333,8 +333,10 @@ aclitemout(PG_FUNCTION_ARGS)
* aclitemeq
* aclitemgt
* AclItem equality and greater-than comparison routines.
- * Two AclItems are equal iff they have the
- * same identifier (and identifier type).
+ * Two AclItems are considered equal iff they have the
+ * same identifier (and identifier type); the mode is ignored.
+ * Note that these routines are really only useful for sorting
+ * AclItems into identifier order.
*
* RETURNS:
* a boolean value indicating = or >
@@ -581,8 +583,12 @@ aclcontains(PG_FUNCTION_ARGS)
num = ACL_NUM(acl);
aidat = ACL_DAT(acl);
for (i = 0; i < num; ++i)
- if (aclitemeq(aip, aidat + i))
+ {
+ /* Note that aclitemeq only considers id, not mode */
+ if (aclitemeq(aip, aidat + i) &&
+ aip->ai_mode == aidat[i].ai_mode)
PG_RETURN_BOOL(true);
+ }
PG_RETURN_BOOL(false);
}