6
6
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
7
7
* Portions Copyright (c) 1994, Regents of the University of California
8
8
*
9
- * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.95 2002/04/04 04:25:45 momjian Exp $
9
+ * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.96 2002/04/18 21:16:16 tgl Exp $
10
10
*
11
11
*-------------------------------------------------------------------------
12
12
*/
@@ -153,7 +153,7 @@ write_group_file(Relation urel, Relation grel)
153
153
datum = heap_getattr (tuple ,Anum_pg_group_groname ,dsc ,& isnull );
154
154
if (isnull )
155
155
continue ;/* ignore NULL groupnames */
156
- groname = ( char * ) DatumGetName (datum );
156
+ groname = NameStr ( * DatumGetName (datum ) );
157
157
158
158
grolist_datum = heap_getattr (tuple ,Anum_pg_group_grolist ,dsc ,& isnull );
159
159
/* Ignore NULL group lists */
@@ -293,7 +293,7 @@ write_user_file(Relation urel)
293
293
datum = heap_getattr (tuple ,Anum_pg_shadow_usename ,dsc ,& isnull );
294
294
if (isnull )
295
295
continue ;/* ignore NULL usernames */
296
- usename = ( char * ) DatumGetName (datum );
296
+ usename = NameStr ( * DatumGetName (datum ) );
297
297
298
298
datum = heap_getattr (tuple ,Anum_pg_shadow_passwd ,dsc ,& isnull );
299
299
@@ -498,6 +498,10 @@ CreateUser(CreateUserStmt *stmt)
498
498
if (!superuser ())
499
499
elog (ERROR ,"CREATE USER: permission denied" );
500
500
501
+ if (strcmp (stmt -> user ,"public" )== 0 )
502
+ elog (ERROR ,"CREATE USER: user name \"%s\" is reserved" ,
503
+ stmt -> user );
504
+
501
505
/*
502
506
* Scan the pg_shadow relation to be certain the user or id doesn't
503
507
* already exist. Note we secure exclusive lock, because we also need
@@ -518,7 +522,7 @@ CreateUser(CreateUserStmt *stmt)
518
522
datum = heap_getattr (tuple ,Anum_pg_shadow_usename ,
519
523
pg_shadow_dsc ,& null );
520
524
Assert (!null );
521
- user_exists = (strcmp (( char * ) DatumGetName (datum ),stmt -> user )== 0 );
525
+ user_exists = (strcmp (NameStr ( * DatumGetName (datum ) ),stmt -> user )== 0 );
522
526
523
527
datum = heap_getattr (tuple ,Anum_pg_shadow_usesysid ,
524
528
pg_shadow_dsc ,& null );
@@ -1027,7 +1031,7 @@ DropUser(DropUserStmt *stmt)
1027
1031
datum = heap_getattr (tmp_tuple ,Anum_pg_database_datname ,
1028
1032
pg_dsc ,& null );
1029
1033
Assert (!null );
1030
- dbname = ( char * ) DatumGetName (datum );
1034
+ dbname = NameStr ( * DatumGetName (datum ) );
1031
1035
elog (ERROR ,"DROP USER: user \"%s\" owns database \"%s\", cannot be removed%s" ,
1032
1036
user ,dbname ,
1033
1037
(length (stmt -> users )> 1 ) ?" (no users removed)" :"" );
@@ -1186,6 +1190,10 @@ CreateGroup(CreateGroupStmt *stmt)
1186
1190
if (!superuser ())
1187
1191
elog (ERROR ,"CREATE GROUP: permission denied" );
1188
1192
1193
+ if (strcmp (stmt -> name ,"public" )== 0 )
1194
+ elog (ERROR ,"CREATE GROUP: group name \"%s\" is reserved" ,
1195
+ stmt -> name );
1196
+
1189
1197
pg_group_rel = heap_openr (GroupRelationName ,ExclusiveLock );
1190
1198
pg_group_dsc = RelationGetDescr (pg_group_rel );
1191
1199
@@ -1200,7 +1208,7 @@ CreateGroup(CreateGroupStmt *stmt)
1200
1208
datum = heap_getattr (tuple ,Anum_pg_group_groname ,
1201
1209
pg_group_dsc ,& null );
1202
1210
Assert (!null );
1203
- group_exists = (strcmp (( char * ) DatumGetName (datum ),stmt -> name )== 0 );
1211
+ group_exists = (strcmp (NameStr ( * DatumGetName (datum ) ),stmt -> name )== 0 );
1204
1212
1205
1213
datum = heap_getattr (tuple ,Anum_pg_group_grosysid ,
1206
1214
pg_group_dsc ,& null );
@@ -1597,7 +1605,7 @@ DropGroup(DropGroupStmt *stmt)
1597
1605
1598
1606
datum = heap_getattr (tuple ,Anum_pg_group_groname ,
1599
1607
pg_group_dsc ,& null );
1600
- if (!null && strcmp (( char * ) DatumGetName (datum ),stmt -> name )== 0 )
1608
+ if (!null && strcmp (NameStr ( * DatumGetName (datum ) ),stmt -> name )== 0 )
1601
1609
{
1602
1610
gro_exists = true;
1603
1611
simple_heap_delete (pg_group_rel ,& tuple -> t_self );