aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2003-12-19 14:21:43 +0000
committerPeter Eisentraut <peter_e@gmx.net>2003-12-19 14:21:43 +0000
commit5570c9ee144cdcc8670419fe35ef9d418e2d3981 (patch)
tree6165e3e029cac1ff4d4ab9b49b9e3fed9f493ce2 /src
parented651a54fd41eea389e93f23c35418bf1438b1aa (diff)
downloadpostgresql-5570c9ee144cdcc8670419fe35ef9d418e2d3981.tar.gz
postgresql-5570c9ee144cdcc8670419fe35ef9d418e2d3981.zip
Forbid REVOKE on untrusted languages, and don't dump privileges of
untrusted languages (in case they sneak in).
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/aclchk.c4
-rw-r--r--src/bin/pg_dump/pg_dump.c8
2 files changed, 7 insertions, 5 deletions
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index bf43769d706..6b97bd6325f 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.91 2003/10/31 20:00:49 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.91.2.1 2003/12/19 14:21:43 petere Exp $
*
* NOTES
* See acl.h.
@@ -592,7 +592,7 @@ ExecuteGrantStmt_Language(GrantStmt *stmt)
aclcheck_error(ACLCHECK_NO_PRIV, ACL_KIND_LANGUAGE,
NameStr(pg_language_tuple->lanname));
- if (!pg_language_tuple->lanpltrusted && stmt->is_grant)
+ if (!pg_language_tuple->lanpltrusted)
ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
errmsg("language \"%s\" is not trusted", langname)));
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 134e9522a37..686102f8567 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -12,7 +12,7 @@
* by PostgreSQL
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.355 2003/10/28 21:05:29 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.355.2.1 2003/12/19 14:21:43 petere Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3488,6 +3488,7 @@ dumpProcLangs(Archive *fout, FuncInfo finfo[], int numFuncs)
int i_lanacl = -1;
char *lanoid;
char *lanname;
+ bool lanpltrusted;
char *lanacl;
const char *lanplcallfoid;
const char *lanvalidator;
@@ -3528,6 +3529,7 @@ dumpProcLangs(Archive *fout, FuncInfo finfo[], int numFuncs)
lanoid = PQgetvalue(res, i, i_oid);
lanplcallfoid = PQgetvalue(res, i, i_lanplcallfoid);
lanname = PQgetvalue(res, i, i_lanname);
+ lanpltrusted = (PQgetvalue(res, i, i_lanpltrusted)[0] == 't');
if (fout->remoteVersion >= 70300)
{
lanvalidator = PQgetvalue(res, i, i_lanvalidator);
@@ -3580,7 +3582,7 @@ dumpProcLangs(Archive *fout, FuncInfo finfo[], int numFuncs)
fmtId(lanname));
appendPQExpBuffer(defqry, "CREATE %sPROCEDURAL LANGUAGE %s",
- (PQgetvalue(res, i, i_lanpltrusted)[0] == 't') ?
+ lanpltrusted ?
"TRUSTED " : "",
fmtId(lanname));
appendPQExpBuffer(defqry, " HANDLER %s",
@@ -3605,7 +3607,7 @@ dumpProcLangs(Archive *fout, FuncInfo finfo[], int numFuncs)
"PROCEDURAL LANGUAGE", deps,
defqry->data, delqry->data, NULL, NULL, NULL);
- if (!aclsSkip)
+ if (!aclsSkip && lanpltrusted)
{
char *tmp = strdup(fmtId(lanname));