8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.39 2000/07/31 22:39:13 tgl Exp $
11
+ * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.40 2000/09/06 14:15:15 petere Exp $
12
12
*
13
13
* NOTES
14
14
* See acl.h.
@@ -355,21 +355,22 @@ aclcheck(char *relname, Acl *acl, AclId id, AclIdType idtype, AclMode mode)
355
355
}
356
356
357
357
int32
358
- pg_aclcheck (char * relname , char * usename , AclMode mode )
358
+ pg_aclcheck (char * relname , Oid userid , AclMode mode )
359
359
{
360
360
HeapTuple tuple ;
361
- AclId id ;
362
361
Acl * acl = (Acl * ) NULL ;
363
362
int32 result ;
363
+ char * usename ;
364
364
Relation relation ;
365
365
366
- tuple = SearchSysCacheTuple (SHADOWNAME ,
367
- PointerGetDatum ( usename ),
366
+ tuple = SearchSysCacheTuple (SHADOWSYSID ,
367
+ ObjectIdGetDatum ( userid ),
368
368
0 , 0 , 0 );
369
369
if (!HeapTupleIsValid (tuple ))
370
- elog (ERROR , "pg_aclcheck: user \"%s\" not found" ,
371
- usename );
372
- id = (AclId ) ((Form_pg_shadow ) GETSTRUCT (tuple ))-> usesysid ;
370
+ elog (ERROR , "pg_aclcheck: invalid user id %u" ,
371
+ (unsigned ) userid );
372
+
373
+ usename = NameStr (((Form_pg_shadow ) GETSTRUCT (tuple ))-> usename );
373
374
374
375
/*
375
376
* Deny anyone permission to update a system catalog unless
@@ -445,28 +446,28 @@ pg_aclcheck(char *relname, char *usename, AclMode mode)
445
446
}
446
447
heap_close (relation , RowExclusiveLock );
447
448
#endif
448
- result = aclcheck (relname , acl , id , (AclIdType ) ACL_IDTYPE_UID , mode );
449
+ result = aclcheck (relname , acl , userid , (AclIdType ) ACL_IDTYPE_UID , mode );
449
450
if (acl )
450
451
pfree (acl );
451
452
return result ;
452
453
}
453
454
454
455
int32
455
- pg_ownercheck (const char * usename ,
456
+ pg_ownercheck (Oid userid ,
456
457
const char * value ,
457
458
int cacheid )
458
459
{
459
460
HeapTuple tuple ;
460
- AclId user_id ,
461
- owner_id = 0 ;
461
+ AclId owner_id = 0 ;
462
+ char * usename ;
462
463
463
- tuple = SearchSysCacheTuple (SHADOWNAME ,
464
- PointerGetDatum ( usename ),
464
+ tuple = SearchSysCacheTuple (SHADOWSYSID ,
465
+ ObjectIdGetDatum ( userid ),
465
466
0 , 0 , 0 );
466
467
if (!HeapTupleIsValid (tuple ))
467
- elog (ERROR , "pg_ownercheck: user \"%s\" not found " ,
468
- usename );
469
- user_id = ( AclId ) ((Form_pg_shadow ) GETSTRUCT (tuple ))-> usesysid ;
468
+ elog (ERROR , "pg_ownercheck: invalid user id %u " ,
469
+ ( unsigned ) userid );
470
+ usename = NameStr ( ((Form_pg_shadow ) GETSTRUCT (tuple ))-> usename ) ;
470
471
471
472
/*
472
473
* Superusers bypass all permission-checking.
@@ -513,26 +514,26 @@ pg_ownercheck(const char *usename,
513
514
break ;
514
515
}
515
516
516
- return user_id == owner_id ;
517
+ return userid == owner_id ;
517
518
}
518
519
519
520
int32
520
- pg_func_ownercheck (char * usename ,
521
+ pg_func_ownercheck (Oid userid ,
521
522
char * funcname ,
522
523
int nargs ,
523
524
Oid * arglist )
524
525
{
525
526
HeapTuple tuple ;
526
- AclId user_id ,
527
- owner_id ;
527
+ AclId owner_id ;
528
+ char * username ;
528
529
529
- tuple = SearchSysCacheTuple (SHADOWNAME ,
530
- PointerGetDatum ( usename ),
530
+ tuple = SearchSysCacheTuple (SHADOWSYSID ,
531
+ ObjectIdGetDatum ( userid ),
531
532
0 , 0 , 0 );
532
533
if (!HeapTupleIsValid (tuple ))
533
- elog (ERROR , "pg_func_ownercheck: user \"%s\" not found " ,
534
- usename );
535
- user_id = ( AclId ) ((Form_pg_shadow ) GETSTRUCT (tuple ))-> usesysid ;
534
+ elog (ERROR , "pg_func_ownercheck: invalid user id %u " ,
535
+ ( unsigned ) userid );
536
+ username = NameStr ( ((Form_pg_shadow ) GETSTRUCT (tuple ))-> usename ) ;
536
537
537
538
/*
538
539
* Superusers bypass all permission-checking.
@@ -541,7 +542,7 @@ pg_func_ownercheck(char *usename,
541
542
{
542
543
#ifdef ACLDEBUG_TRACE
543
544
elog (DEBUG , "pg_ownercheck: user \"%s\" is superuser" ,
544
- usename );
545
+ username );
545
546
#endif
546
547
return 1 ;
547
548
}
@@ -556,25 +557,25 @@ pg_func_ownercheck(char *usename,
556
557
557
558
owner_id = ((Form_pg_proc ) GETSTRUCT (tuple ))-> proowner ;
558
559
559
- return user_id == owner_id ;
560
+ return userid == owner_id ;
560
561
}
561
562
562
563
int32
563
- pg_aggr_ownercheck (char * usename ,
564
+ pg_aggr_ownercheck (Oid userid ,
564
565
char * aggname ,
565
566
Oid basetypeID )
566
567
{
567
568
HeapTuple tuple ;
568
- AclId user_id ,
569
- owner_id ;
569
+ AclId owner_id ;
570
+ char * username ;
570
571
571
- tuple = SearchSysCacheTuple (SHADOWNAME ,
572
- PointerGetDatum (usename ),
572
+ tuple = SearchSysCacheTuple (SHADOWSYSID ,
573
+ PointerGetDatum (userid ),
573
574
0 , 0 , 0 );
574
575
if (!HeapTupleIsValid (tuple ))
575
- elog (ERROR , "pg_aggr_ownercheck: user \"%s\" not found " ,
576
- usename );
577
- user_id = ( AclId ) ((Form_pg_shadow ) GETSTRUCT (tuple ))-> usesysid ;
576
+ elog (ERROR , "pg_aggr_ownercheck: invalid user id %u " ,
577
+ ( unsigned ) userid );
578
+ username = NameStr ( ((Form_pg_shadow ) GETSTRUCT (tuple ))-> usename ) ;
578
579
579
580
/*
580
581
* Superusers bypass all permission-checking.
@@ -583,7 +584,7 @@ pg_aggr_ownercheck(char *usename,
583
584
{
584
585
#ifdef ACLDEBUG_TRACE
585
586
elog (DEBUG , "pg_aggr_ownercheck: user \"%s\" is superuser" ,
586
- usename );
587
+ username );
587
588
#endif
588
589
return 1 ;
589
590
}
@@ -598,5 +599,5 @@ pg_aggr_ownercheck(char *usename,
598
599
599
600
owner_id = ((Form_pg_aggregate ) GETSTRUCT (tuple ))-> aggowner ;
600
601
601
- return user_id == owner_id ;
602
+ return userid == owner_id ;
602
603
}
0 commit comments