88 *
99 *
1010 * IDENTIFICATION
11- * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.53 2000/11/16 22:30 :31 tgl Exp $
11+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.54 2000/11/28 23:42 :31 tgl Exp $
1212 *
1313 *-------------------------------------------------------------------------
1414 */
@@ -276,7 +276,14 @@ aclitemout(PG_FUNCTION_ARGS)
276276 htup = SearchSysCache (SHADOWSYSID ,
277277 ObjectIdGetDatum (aip -> ai_id ),
278278 0 , 0 , 0 );
279- if (!HeapTupleIsValid (htup ))
279+ if (HeapTupleIsValid (htup ))
280+ {
281+ strncat (p ,
282+ NameStr (((Form_pg_shadow ) GETSTRUCT (htup ))-> usename ),
283+ NAMEDATALEN );
284+ ReleaseSysCache (htup );
285+ }
286+ else
280287 {
281288 /* Generate numeric UID if we don't find an entry */
282289 char * tmp ;
@@ -286,18 +293,22 @@ aclitemout(PG_FUNCTION_ARGS)
286293 strcat (p , tmp );
287294 pfree (tmp );
288295 }
289- else
290- {
291- strncat (p , (char * ) & ((Form_pg_shadow )
292- GETSTRUCT (htup ))-> usename ,
293- sizeof (NameData ));
294- ReleaseSysCache (htup );
295- }
296296 break ;
297297 case ACL_IDTYPE_GID :
298298 strcat (p , "group " );
299299 tmpname = get_groname (aip -> ai_id );
300- strncat (p , tmpname , NAMEDATALEN );
300+ if (tmpname != NULL )
301+ strncat (p , tmpname , NAMEDATALEN );
302+ else
303+ {
304+ /* Generate numeric GID if we don't find an entry */
305+ char * tmp ;
306+
307+ tmp = DatumGetCString (DirectFunctionCall1 (int4out ,
308+ Int32GetDatum ((int32 ) aip -> ai_id )));
309+ strcat (p , tmp );
310+ pfree (tmp );
311+ }
301312 break ;
302313 case ACL_IDTYPE_WORLD :
303314 break ;
0 commit comments