C Extension woes - Mailing list pgsql-hackers

From Tim Hawes
Subject C Extension woes
Date
Msg-id 48A2BCD0.3030105@novadine.com
Whole thread Raw
Responses Re: C Extension woes  (Jan Urbański <j.urbanski@students.mimuw.edu.pl>)
Re: C Extension woes  (Andrew Chernow <ac@esilo.com>)
List pgsql-hackers
Hello all,

I am trying to write an extension in C that returns a simple environment 
variable. The code compiles without any complaint or warning, and it 
loads fine into the database, however, when I run the function, I get 
disconnected from the server.

Here is my C code:

#include <postgres.h>
#include <fmgr.h>
PG_MODULE_MAGIC;

#include <stdio.h>
#include <stdlib.h>

PG_FUNCTION_INFO_V1(pl_masterkey);

text * pl_masterkey(PG_FUNCTION_ARGS)
{ char *e_var = getenv("PGMASTERKEY"); size_t length = VARSIZE(e_var) - VARHDRSZ;
 text * mkey = (text *) palloc(length); VARATT_SIZEP(mkey) = length; memcpy(VARDATA(mkey), e_var, length);
 return mkey;
}

And here is the SQL I use to create the function in PostgreSQL:

CREATE FUNCTION pl_masterkey() RETURNS text AS 'pl_masterkey', 'pl_masterkey' LANGUAGE C STRICT;

And the results:

select pl_masterkey();
server closed the connection unexpectedly       This probably means the server terminated abnormally       before or
whileprocessing the request.
 
The connection to the server was lost. Attempting reset: Failed.
!>

Thanks ahead of time for any and all help.



pgsql-hackers by date:

Previous
From: Gregory Stark
Date:
Subject: Re: Replay attack of query cancel
Next
From: Jan Urbański
Date:
Subject: Re: C Extension woes