From 5c4d1398a64b5573b653205e19650914e078f168 Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Thu, 12 Jul 2001 17:42:08 +0000 Subject: [PATCH] Back out SET AUTHORIZATION patch until security is resolved. --- src/pl/plpgsql/src/gram.y | 35 ++----------------------- src/pl/plpgsql/src/pl_comp.c | 3 +-- src/pl/plpgsql/src/pl_exec.c | 49 ++--------------------------------- src/pl/plpgsql/src/pl_funcs.c | 21 +-------------- src/pl/plpgsql/src/plpgsql.h | 23 +--------------- src/pl/plpgsql/src/scan.l | 6 +---- 6 files changed, 8 insertions(+), 129 deletions(-) diff --git a/src/pl/plpgsql/src/gram.y b/src/pl/plpgsql/src/gram.y index c059097a3f..62e26f9006 100644 --- a/src/pl/plpgsql/src/gram.y +++ b/src/pl/plpgsql/src/gram.y @@ -4,7 +4,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.23 2001/07/12 01:19:40 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.24 2001/07/12 17:42:07 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -122,13 +122,11 @@ static PLpgSQL_expr *make_tupret_expr(PLpgSQL_row *row); %type <stmts> proc_sect, proc_stmts, stmt_else, loop_body %type <stmt> proc_stmt, pl_block %type <stmt> stmt_assign, stmt_if, stmt_loop, stmt_while, stmt_exit -%type <stmt> stmt_return, stmt_raise, stmt_execsql, stmt_fori, stmt_setauth +%type <stmt> stmt_return, stmt_raise, stmt_execsql, stmt_fori %type <stmt> stmt_fors, stmt_select, stmt_perform %type <stmt> stmt_dynexecute, stmt_dynfors, stmt_getdiag %type <stmt> stmt_open, stmt_fetch, stmt_close -%type <ival> auth_level - %type <intlist> raise_params %type <ival> raise_level, raise_param %type <str> raise_msg @@ -174,10 +172,6 @@ static PLpgSQL_expr *make_tupret_expr(PLpgSQL_row *row); %token K_PERFORM %token K_ROW_COUNT %token K_RAISE -%token K_SET -%token K_AUTHORIZATION -%token K_INVOKER -%token K_DEFINER %token K_RECORD %token K_RENAME %token K_RESULT_OID @@ -732,8 +726,6 @@ proc_stmt : pl_block { $$ = $1; } | stmt_raise { $$ = $1; } - | stmt_setauth - { $$ = $1; } | stmt_execsql { $$ = $1; } | stmt_dynexecute @@ -1251,29 +1243,6 @@ stmt_return : K_RETURN lno } ; -stmt_setauth : K_SET K_AUTHORIZATION auth_level lno ';' - { - PLpgSQL_stmt_setauth *new; - - new=malloc(sizeof(PLpgSQL_stmt_setauth)); - - new->cmd_type = PLPGSQL_STMT_SETAUTH; - new->auth_level = $3; - new->lineno = $4; - - $$ = (PLpgSQL_stmt *)new; - } - -auth_level : K_DEFINER - { - $$=PLPGSQL_AUTH_DEFINER; - } - | K_INVOKER - { - $$=PLPGSQL_AUTH_INVOKER; - } -; - stmt_raise : K_RAISE lno raise_level raise_msg raise_params ';' { PLpgSQL_stmt_raise *new; diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index ecdb2fd21a..2ab6632e33 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.32 2001/07/11 18:54:18 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.33 2001/07/12 17:42:07 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -169,7 +169,6 @@ plpgsql_compile(Oid fn_oid, int functype) function->fn_functype = functype; function->fn_oid = fn_oid; - function->definer_uid = procStruct->proowner; function->fn_name = strdup(DatumGetCString(DirectFunctionCall1(nameout, NameGetDatum(&(procStruct->proname))))); diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index d5aeba891c..32e66287eb 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.45 2001/07/11 18:54:18 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.46 2001/07/12 17:42:07 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -47,7 +47,6 @@ #include "plpgsql.h" #include "pl.tab.h" -#include "miscadmin.h" #include "access/heapam.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" @@ -106,8 +105,6 @@ static int exec_stmt_exit(PLpgSQL_execstate * estate, PLpgSQL_stmt_exit * stmt); static int exec_stmt_return(PLpgSQL_execstate * estate, PLpgSQL_stmt_return * stmt); -static int exec_stmt_setauth(PLpgSQL_execstate * estate, - PLpgSQL_stmt_setauth * stmt); static int exec_stmt_raise(PLpgSQL_execstate * estate, PLpgSQL_stmt_raise * stmt); static int exec_stmt_execsql(PLpgSQL_execstate * estate, @@ -229,9 +226,6 @@ plpgsql_exec_function(PLpgSQL_function * func, FunctionCallInfo fcinfo) case PLPGSQL_STMT_RETURN: stmttype = "return"; break; - case PLPGSQL_STMT_SETAUTH: - stmttype = "setauth"; - break; case PLPGSQL_STMT_RAISE: stmttype = "raise"; break; @@ -283,10 +277,7 @@ plpgsql_exec_function(PLpgSQL_function * func, FunctionCallInfo fcinfo) estate.retistuple = func->fn_retistuple; estate.retisset = func->fn_retset; estate.exitlabel = NULL; - estate.invoker_uid = GetUserId(); - estate.definer_uid = func->definer_uid; - estate.auth_level = PLPGSQL_AUTH_INVOKER; - + estate.found_varno = func->found_varno; estate.ndatums = func->ndatums; estate.datums = palloc(sizeof(PLpgSQL_datum *) * estate.ndatums); @@ -406,9 +397,6 @@ plpgsql_exec_function(PLpgSQL_function * func, FunctionCallInfo fcinfo) elog(ERROR, "control reaches end of function without RETURN"); } - if (estate.auth_level!=PLPGSQL_AUTH_INVOKER) - SetUserId(estate.invoker_uid); - /* * We got a return value - process it */ @@ -589,9 +577,6 @@ plpgsql_exec_trigger(PLpgSQL_function * func, estate.retistuple = func->fn_retistuple; estate.retisset = func->fn_retset; estate.exitlabel = NULL; - estate.invoker_uid = GetUserId(); - estate.definer_uid = func->definer_uid; - estate.auth_level = PLPGSQL_AUTH_INVOKER; estate.found_varno = func->found_varno; estate.ndatums = func->ndatums; @@ -775,9 +760,6 @@ plpgsql_exec_trigger(PLpgSQL_function * func, elog(ERROR, "control reaches end of trigger procedure without RETURN"); } - if (estate.auth_level!=PLPGSQL_AUTH_INVOKER) - SetUserId(estate.invoker_uid); - /* * Check that the returned tuple structure has the same attributes, * the relation that fired the trigger has. @@ -1040,10 +1022,6 @@ exec_stmt(PLpgSQL_execstate * estate, PLpgSQL_stmt * stmt) rc = exec_stmt_return(estate, (PLpgSQL_stmt_return *) stmt); break; - case PLPGSQL_STMT_SETAUTH: - rc = exec_stmt_setauth(estate, (PLpgSQL_stmt_setauth *) stmt); - break; - case PLPGSQL_STMT_RAISE: rc = exec_stmt_raise(estate, (PLpgSQL_stmt_raise *) stmt); break; @@ -1667,29 +1645,6 @@ exec_stmt_return(PLpgSQL_execstate * estate, PLpgSQL_stmt_return * stmt) return PLPGSQL_RC_RETURN; } -/* ---------- - * exec_stmt_setauth Changes user ID to/from - * that of the function owner's - * ---------- - */ - -static int -exec_stmt_setauth(PLpgSQL_execstate * estate, PLpgSQL_stmt_setauth * stmt) -{ - switch(stmt->auth_level) - { - case PLPGSQL_AUTH_DEFINER: - SetUserId(estate->definer_uid); - break; - case PLPGSQL_AUTH_INVOKER: - SetUserId(estate->invoker_uid); - break; - } - - estate->auth_level=stmt->auth_level; - return PLPGSQL_RC_OK; -} - /* ---------- * exec_stmt_raise Build a message and throw it with diff --git a/src/pl/plpgsql/src/pl_funcs.c b/src/pl/plpgsql/src/pl_funcs.c index 55d6622a04..cce131b0c2 100644 --- a/src/pl/plpgsql/src/pl_funcs.c +++ b/src/pl/plpgsql/src/pl_funcs.c @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.14 2001/07/11 18:54:18 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.15 2001/07/12 17:42:08 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -382,7 +382,6 @@ static void dump_fors(PLpgSQL_stmt_fors * stmt); static void dump_select(PLpgSQL_stmt_select * stmt); static void dump_exit(PLpgSQL_stmt_exit * stmt); static void dump_return(PLpgSQL_stmt_return * stmt); -static void dump_setauth(PLpgSQL_stmt_setauth * stmt); static void dump_raise(PLpgSQL_stmt_raise * stmt); static void dump_execsql(PLpgSQL_stmt_execsql * stmt); static void dump_dynexecute(PLpgSQL_stmt_dynexecute * stmt); @@ -439,9 +438,6 @@ dump_stmt(PLpgSQL_stmt * stmt) case PLPGSQL_STMT_RETURN: dump_return((PLpgSQL_stmt_return *) stmt); break; - case PLPGSQL_STMT_SETAUTH: - dump_setauth((PLpgSQL_stmt_setauth *) stmt); - break; case PLPGSQL_STMT_RAISE: dump_raise((PLpgSQL_stmt_raise *) stmt); break; @@ -725,21 +721,6 @@ dump_return(PLpgSQL_stmt_return * stmt) printf("\n"); } -static void -dump_setauth(PLpgSQL_stmt_setauth * stmt) -{ - dump_ind(); - switch (stmt->auth_level) - { - case PLPGSQL_AUTH_DEFINER: - printf("SET AUTHORIZATION DEFINER\n"); - break; - case PLPGSQL_AUTH_INVOKER: - printf("SET AUTHORIZATION INVOKER\n"); - break; - } -} - static void dump_raise(PLpgSQL_stmt_raise * stmt) { diff --git a/src/pl/plpgsql/src/plpgsql.h b/src/pl/plpgsql/src/plpgsql.h index c460cbf68a..fd507bc8b1 100644 --- a/src/pl/plpgsql/src/plpgsql.h +++ b/src/pl/plpgsql/src/plpgsql.h @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.15 2001/07/11 18:54:19 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.16 2001/07/12 17:42:08 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -95,7 +95,6 @@ enum PLPGSQL_STMT_DYNEXECUTE, PLPGSQL_STMT_DYNFORS, PLPGSQL_STMT_GETDIAG, - PLPGSQL_STMT_SETAUTH, PLPGSQL_STMT_OPEN, PLPGSQL_STMT_FETCH, PLPGSQL_STMT_CLOSE @@ -113,16 +112,6 @@ enum PLPGSQL_RC_RETURN }; -/* --------- - * Authorization levels - * --------- - */ -enum -{ - PLPGSQL_AUTH_INVOKER, - PLPGSQL_AUTH_DEFINER, -}; - /* ---------- * GET DIAGNOSTICS system attrs * ---------- @@ -436,12 +425,6 @@ typedef struct int retrecno; } PLpgSQL_stmt_return; -typedef struct -{ /* SET AUTHORIZATION statement */ - int cmd_type; - int lineno; - int auth_level; -} PLpgSQL_stmt_setauth; typedef struct { /* RAISE statement */ @@ -497,7 +480,6 @@ typedef struct PLpgSQL_function int tg_nargs_varno; int ndatums; - Oid definer_uid; PLpgSQL_datum **datums; PLpgSQL_stmt_block *action; struct PLpgSQL_function *next; @@ -520,9 +502,6 @@ typedef struct int found_varno; int ndatums; PLpgSQL_datum **datums; - Oid invoker_uid; - Oid definer_uid; - int auth_level; } PLpgSQL_execstate; diff --git a/src/pl/plpgsql/src/scan.l b/src/pl/plpgsql/src/scan.l index 7a7f6f4b1f..6e17365705 100644 --- a/src/pl/plpgsql/src/scan.l +++ b/src/pl/plpgsql/src/scan.l @@ -4,7 +4,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.13 2001/07/11 18:54:19 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.l,v 1.14 2001/07/12 17:42:08 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -121,10 +121,6 @@ null { return K_NULL; } open { return K_OPEN; } perform { return K_PERFORM; } raise { return K_RAISE; } -set { return K_SET; } -authorization { return K_AUTHORIZATION; } -invoker { return K_INVOKER; } -definer { return K_DEFINER; } record { return K_RECORD; } rename { return K_RENAME; } result_oid { return K_RESULT_OID; } -- 2.49.0