diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-02 05:21:02 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-02 05:21:02 +0000 |
commit | 4390ebc505e89efb98cfeac9847dd7a314bf5b11 (patch) | |
tree | 1e836435e12325bd0feba5502979d008b3f3bd10 /src/backend/commands/user.c | |
parent | 22499b485429b38db3f521dfccde6c2c4accaa6c (diff) | |
download | postgresql-4390ebc505e89efb98cfeac9847dd7a314bf5b11.tar.gz postgresql-4390ebc505e89efb98cfeac9847dd7a314bf5b11.zip |
Repair core dump when trying to delete an entry from an already-NULL
datconfig or useconfig field. Per report from Dustin Sallings.
Diffstat (limited to 'src/backend/commands/user.c')
-rw-r--r-- | src/backend/commands/user.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index a9b1e5d05f2..5028b2a9f72 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.113 2002/10/21 19:46:45 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.113.2.1 2002/12/02 05:21:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -915,8 +915,10 @@ AlterUserSet(AlterUserSetStmt *stmt) repl_repl[Anum_pg_shadow_useconfig - 1] = 'r'; if (strcmp(stmt->variable, "all") == 0 && valuestr == NULL) + { /* RESET ALL */ repl_null[Anum_pg_shadow_useconfig - 1] = 'n'; + } else { Datum datum; @@ -935,7 +937,10 @@ AlterUserSet(AlterUserSetStmt *stmt) else array = GUCArrayDelete(array, stmt->variable); - repl_val[Anum_pg_shadow_useconfig - 1] = PointerGetDatum(array); + if (array) + repl_val[Anum_pg_shadow_useconfig - 1] = PointerGetDatum(array); + else + repl_null[Anum_pg_shadow_useconfig - 1] = 'n'; } newtuple = heap_modifytuple(oldtuple, rel, repl_val, repl_null, repl_repl); |