summaryrefslogtreecommitdiff
path: root/src/include/utils/guc_tables.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2009-09-03 22:08:23 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2009-09-03 22:08:23 +0000
commitfe8170dcfa9dda7cb46735a17542955cae2acf79 (patch)
tree3d0f5338a668e3b3b13dcb58ede879271b6c14df /src/include/utils/guc_tables.h
parent095f7ba339ea26d66bbd84f6aa92fbc3e9d28ff2 (diff)
Disallow RESET ROLE and RESET SESSION AUTHORIZATION inside security-definer
functions. This extends the previous patch that forbade SETting these variables inside security-definer functions. RESET is equally a security hole, since it would allow regaining privileges of the caller; furthermore it can trigger Assert failures and perhaps other internal errors, since the code is not expecting these variables to change in such contexts. The previous patch did not cover this case because assign hooks don't really have enough information, so move the responsibility for preventing this into guc.c. Problem discovered by Heikki Linnakangas. Security: no CVE assigned yet, extends CVE-2007-6600
Diffstat (limited to 'src/include/utils/guc_tables.h')
-rw-r--r--src/include/utils/guc_tables.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h
index 3d389acb2f7..0578ab05a86 100644
--- a/src/include/utils/guc_tables.h
+++ b/src/include/utils/guc_tables.h
@@ -7,7 +7,7 @@
*
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/include/utils/guc_tables.h,v 1.38 2008/01/01 19:45:59 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/guc_tables.h,v 1.38.2.1 2009/09/03 22:08:23 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -148,6 +148,8 @@ struct config_generic
#define GUC_UNIT_MIN 0x4000 /* value is in minutes */
#define GUC_UNIT_TIME 0x7000 /* mask for MS, S, MIN */
+#define GUC_NOT_WHILE_SEC_DEF 0x8000 /* can't change inside sec-def func */
+
/* bit values in status field */
#define GUC_IS_IN_FILE 0x0001 /* found it in config file */
/*