diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index b2698ad19b645f43d2d32dbfdbefb0e60f081d2b..67f675f0d3b8dfb9fe67a3785f4f0e0a2f5c79ff 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.43 2000/11/16 22:30:17 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.44 2000/11/28 23:42:31 tgl Exp $ * * NOTES * See acl.h. @@ -172,6 +172,9 @@ get_grosysid(char *groname) return id; } +/* + * Convert group ID to name, or return NULL if group can't be found + */ char * get_groname(AclId grosysid) { @@ -186,8 +189,6 @@ get_groname(AclId grosysid) name = pstrdup(NameStr(((Form_pg_group) GETSTRUCT(tuple))->groname)); ReleaseSysCache(tuple); } - else - elog(NOTICE, "get_groname: group %u not found", grosysid); return name; } diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index a8bc5e349a3e960bd00da97213e5835b9d074d95..ee3a41701f74c156e1724382885c77205821f41f 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.53 2000/11/16 22:30:31 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.54 2000/11/28 23:42:31 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -276,7 +276,14 @@ aclitemout(PG_FUNCTION_ARGS) htup = SearchSysCache(SHADOWSYSID, ObjectIdGetDatum(aip->ai_id), 0, 0, 0); - if (!HeapTupleIsValid(htup)) + if (HeapTupleIsValid(htup)) + { + strncat(p, + NameStr(((Form_pg_shadow) GETSTRUCT(htup))->usename), + NAMEDATALEN); + ReleaseSysCache(htup); + } + else { /* Generate numeric UID if we don't find an entry */ char *tmp; @@ -286,18 +293,22 @@ aclitemout(PG_FUNCTION_ARGS) strcat(p, tmp); pfree(tmp); } - else - { - strncat(p, (char *) &((Form_pg_shadow) - GETSTRUCT(htup))->usename, - sizeof(NameData)); - ReleaseSysCache(htup); - } break; case ACL_IDTYPE_GID: strcat(p, "group "); tmpname = get_groname(aip->ai_id); - strncat(p, tmpname, NAMEDATALEN); + if (tmpname != NULL) + strncat(p, tmpname, NAMEDATALEN); + else + { + /* Generate numeric GID if we don't find an entry */ + char *tmp; + + tmp = DatumGetCString(DirectFunctionCall1(int4out, + Int32GetDatum((int32) aip->ai_id))); + strcat(p, tmp); + pfree(tmp); + } break; case ACL_IDTYPE_WORLD: break;