Обсуждение: ERROR: language "c" is not trusted

Поиск
Список
Период
Сортировка

ERROR: language "c" is not trusted

От
Chris Albertson
Дата:
I do the following as the user "postgres"

  alberts=# CREATE FUNCTION foobar(CSTRING)
  alberts-#    RETURNS opaque
  alberts-#    AS '$libdir/mystuff' , 'foobar'
  alberts-#    LANGUAGE 'c'
  alberts-#    WITH (isstrict,iscachable);
  CREATE FUNCTION

Next I'd like to be able to use the funtion as a "normal" user
so I thy this:

  grant USAGE ON LANGUAGE c TO alberts;
  ERROR:  language "c" is not trusted

OK, now what?





=====
Chris Albertson
  Home:   310-376-1029  chrisalbertson90278@yahoo.com
  Cell:   310-990-7550
  Office: 310-336-5189  Christopher.J.Albertson@aero.org
  KG6OMK

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com

Re: ERROR: language "c" is not trusted

От
"Dann Corbit"
Дата:
http://www.faqs.org/docs/ppbook/r24435.htm

> -----Original Message-----
> From: Chris Albertson [mailto:chrisalbertson90278@yahoo.com]
> Sent: Tuesday, July 01, 2003 4:45 PM
> To: pgsql-general@postgresql.org
> Subject: [GENERAL] ERROR: language "c" is not trusted
>
>
> I do the following as the user "postgres"
>
>   alberts=# CREATE FUNCTION foobar(CSTRING)
>   alberts-#    RETURNS opaque
>   alberts-#    AS '$libdir/mystuff' , 'foobar'
>   alberts-#    LANGUAGE 'c'
>   alberts-#    WITH (isstrict,iscachable);
>   CREATE FUNCTION
>
> Next I'd like to be able to use the funtion as a "normal"
> user so I thy this:
>
>   grant USAGE ON LANGUAGE c TO alberts;
>   ERROR:  language "c" is not trusted
>
> OK, now what?
>
>
>
>
>
> =====
> Chris Albertson
>   Home:   310-376-1029  chrisalbertson90278@yahoo.com
>   Cell:   310-990-7550
>   Office: 310-336-5189  Christopher.J.Albertson@aero.org
>   KG6OMK
>
> __________________________________
> Do you Yahoo!?
> SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index
> scan if your
>       joining column's datatypes do not match
>

Re: ERROR: language "c" is not trusted

От
Chris Albertson
Дата:
Thanks for the hint.  This fixed it:

 alberts=# UPDATE pg_language
            SET lanpltrusted = true
            WHERE lanname = 'c';
 UPDATE 1

 alberts=# grant USAGE ON LANGUAGE c TO alberts;
 GRANT



--- Dann Corbit <DCorbit@connx.com> wrote:
> http://www.faqs.org/docs/ppbook/r24435.htm
>
> > -----Original Message-----
> > From: Chris Albertson [mailto:chrisalbertson90278@yahoo.com]
> > Sent: Tuesday, July 01, 2003 4:45 PM
> > To: pgsql-general@postgresql.org
> > Subject: [GENERAL] ERROR: language "c" is not trusted
> >
> >
> > I do the following as the user "postgres"
> >
> >   alberts=# CREATE FUNCTION foobar(CSTRING)
> >   alberts-#    RETURNS opaque
> >   alberts-#    AS '$libdir/mystuff' , 'foobar'
> >   alberts-#    LANGUAGE 'c'
> >   alberts-#    WITH (isstrict,iscachable);
> >   CREATE FUNCTION
> >
> > Next I'd like to be able to use the funtion as a "normal"
> > user so I thy this:
> >
> >   grant USAGE ON LANGUAGE c TO alberts;
> >   ERROR:  language "c" is not trusted
> >
> > OK, now what?


=====
Chris Albertson
  Home:   310-376-1029  chrisalbertson90278@yahoo.com
  Cell:   310-990-7550
  Office: 310-336-5189  Christopher.J.Albertson@aero.org
  KG6OMK

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com

Re: ERROR: language "c" is not trusted

От
Joe Conway
Дата:
Chris Albertson wrote:
> Thanks for the hint.  This fixed it:
>
>  alberts=# UPDATE pg_language
>             SET lanpltrusted = true
>             WHERE lanname = 'c';
>  UPDATE 1
>
>  alberts=# grant USAGE ON LANGUAGE c TO alberts;
>  GRANT
>

Ummm, I doubt that's really what you wanted, was it? Quoting the fine
manual, with emphasis added:

USAGE
     For procedural languages, allows the use of the specified language
for the creation of functions in that language. This is the only type of
     ^^^^^^^^^^^^^^^^^^^^^^^^^
privilege that is applicable to procedural languages.

EXECUTE
     Allows the use of the specified function and the use of any
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
operators that are implemented on top of the function. This is the only
type of privilege that is applicable to functions. (This syntax works
for aggregate functions, as well.)

Did you just want to allow non-superusers to execute C language
functions, or create their own? The latter is a huge, gaping security
hole, which is why the language is marked "untrusted".

Joe