diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-01-29 22:35:30 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-01-29 22:35:30 +0000 |
commit | ae8db9a7ab1375d5a092acfa0b9889dcf798d845 (patch) | |
tree | 76343b638bcb4586ec1bfa3dbe60968fcb7ed134 | |
parent | 2fd184b8cf8d5922db01ada854d9d31903faa492 (diff) | |
download | postgresql-ae8db9a7ab1375d5a092acfa0b9889dcf798d845.tar.gz |
Make sure contrib C functions are marked strict where needed.
Kris Jurka
-rw-r--r-- | contrib/chkpass/chkpass.c | 19 | ||||
-rw-r--r-- | contrib/chkpass/chkpass.sql.in | 12 | ||||
-rw-r--r-- | contrib/isbn_issn/isbn_issn.sql.in | 38 | ||||
-rw-r--r-- | contrib/lo/lo.sql.in | 14 | ||||
-rw-r--r-- | contrib/miscutil/misc_utils.c | 17 | ||||
-rw-r--r-- | contrib/miscutil/misc_utils.h | 4 | ||||
-rw-r--r-- | contrib/miscutil/misc_utils.sql.in | 8 | ||||
-rw-r--r-- | contrib/userlock/user_locks.sql.in | 22 |
8 files changed, 58 insertions, 76 deletions
diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c index dc8a418232..f9a0cd602f 100644 --- a/contrib/chkpass/chkpass.c +++ b/contrib/chkpass/chkpass.c @@ -4,7 +4,7 @@ * darcy@druid.net * http://www.druid.net/darcy/ * - * $Id: chkpass.c,v 1.11 2003/09/07 15:27:25 tgl Exp $ + * $Id: chkpass.c,v 1.11.2.1 2005/01/29 22:35:29 tgl Exp $ * best viewed with tabs set to 4 */ @@ -82,14 +82,10 @@ chkpass_in(PG_FUNCTION_ARGS) } if (verify_pass(str) != 0) - { ereport(ERROR, (errcode(ERRCODE_DATA_EXCEPTION), errmsg("password \"%s\" is weak", str))); - PG_RETURN_POINTER(NULL); - } - result = (chkpass *) palloc(sizeof(chkpass)); mysalt[0] = salt_chars[random() & 0x3f]; @@ -112,9 +108,6 @@ chkpass_out(PG_FUNCTION_ARGS) chkpass *password = (chkpass *) PG_GETARG_POINTER(0); char *result; - if (password == NULL) - PG_RETURN_POINTER(NULL); - if ((result = (char *) palloc(16)) != NULL) { result[0] = ':'; @@ -134,10 +127,7 @@ Datum chkpass_rout(PG_FUNCTION_ARGS) { chkpass *password = (chkpass *) PG_GETARG_POINTER(0); - text *result = NULL; - - if (password == NULL) - PG_RETURN_POINTER(NULL); + text *result; if ((result = (text *) palloc(VARHDRSZ + 16)) != NULL) { @@ -162,9 +152,6 @@ chkpass_eq(PG_FUNCTION_ARGS) char str[10]; int sz = 8; - if (!a1 || !a2) - PG_RETURN_BOOL(0); - if (a2->vl_len < 12) sz = a2->vl_len - 4; strncpy(str, a2->vl_dat, sz); @@ -181,8 +168,6 @@ chkpass_ne(PG_FUNCTION_ARGS) char str[10]; int sz = 8; - if (!a1 || !a2) - PG_RETURN_BOOL(0); if (a2->vl_len < 12) sz = a2->vl_len - 4; strncpy(str, a2->vl_dat, sz); diff --git a/contrib/chkpass/chkpass.sql.in b/contrib/chkpass/chkpass.sql.in index 418c016cf3..436e6c1feb 100644 --- a/contrib/chkpass/chkpass.sql.in +++ b/contrib/chkpass/chkpass.sql.in @@ -4,7 +4,7 @@ -- darcy@druid.net -- http://www.druid.net/darcy/ -- --- $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.4 2003/05/14 03:25:55 tgl Exp $ +-- $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.4.4.1 2005/01/29 22:35:29 tgl Exp $ -- -- best viewed with tabs set to 4 -- @@ -19,12 +19,12 @@ SET search_path = public; CREATE FUNCTION chkpass_in(cstring) RETURNS chkpass AS 'MODULE_PATHNAME' - LANGUAGE 'c'; + LANGUAGE C STRICT; CREATE FUNCTION chkpass_out(chkpass) RETURNS cstring AS 'MODULE_PATHNAME' - LANGUAGE 'c'; + LANGUAGE C STRICT; CREATE TYPE chkpass ( internallength = 16, @@ -36,7 +36,7 @@ CREATE TYPE chkpass ( CREATE FUNCTION raw(chkpass) RETURNS text AS 'MODULE_PATHNAME', 'chkpass_rout' - LANGUAGE 'c'; + LANGUAGE C STRICT; -- -- The various boolean tests: @@ -45,12 +45,12 @@ CREATE FUNCTION raw(chkpass) CREATE FUNCTION eq(chkpass, text) RETURNS bool AS 'MODULE_PATHNAME', 'chkpass_eq' - LANGUAGE 'c'; + LANGUAGE C STRICT; CREATE FUNCTION ne(chkpass, text) RETURNS bool AS 'MODULE_PATHNAME', 'chkpass_ne' - LANGUAGE 'c'; + LANGUAGE C STRICT; -- -- Now the operators. Note how some of the parameters to some diff --git a/contrib/isbn_issn/isbn_issn.sql.in b/contrib/isbn_issn/isbn_issn.sql.in index 0947fbfa91..e1b66b6f8f 100644 --- a/contrib/isbn_issn/isbn_issn.sql.in +++ b/contrib/isbn_issn/isbn_issn.sql.in @@ -1,7 +1,7 @@ -- -- PostgreSQL code for ISSNs. -- --- $Id: isbn_issn.sql.in,v 1.9 2003/06/28 00:36:40 momjian Exp $ +-- $Id: isbn_issn.sql.in,v 1.9.4.1 2005/01/29 22:35:29 tgl Exp $ -- -- Adjust this setting to control where the objects get created. @@ -14,12 +14,12 @@ SET search_path = public; CREATE FUNCTION issn_in(cstring) RETURNS issn AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_out(issn) RETURNS cstring AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE TYPE issn ( INTERNALLENGTH = 16, @@ -39,32 +39,32 @@ COMMENT ON TYPE issn CREATE FUNCTION issn_lt(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_le(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_eq(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_ge(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_gt(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_ne(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- -- Now the operators. Note how some of the parameters to some @@ -120,7 +120,7 @@ CREATE OPERATOR <> ( CREATE FUNCTION issn_cmp(issn, issn) RETURNS integer AS '$libdir/isbn_issn' -LANGUAGE c; +LANGUAGE c STRICT; -- Create default operator class for 'issn' -- -- Needed to create index or primary key -- @@ -147,12 +147,12 @@ AS CREATE FUNCTION isbn_in(cstring) RETURNS isbn AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_out(isbn) RETURNS cstring AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE TYPE isbn ( INTERNALLENGTH = 16, @@ -171,32 +171,32 @@ COMMENT ON TYPE isbn IS 'International Standard Book Number'; CREATE FUNCTION isbn_lt(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_le(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_eq(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_ge(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_gt(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_ne(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- -- Now the operators. Note how some of the parameters to some @@ -253,7 +253,7 @@ CREATE OPERATOR <> ( CREATE FUNCTION isbn_cmp(isbn, isbn) RETURNS integer AS '$libdir/isbn_issn' -LANGUAGE c; +LANGUAGE c STRICT; -- Create default operator class for 'isbn' -- -- Needed to create index or primary key -- diff --git a/contrib/lo/lo.sql.in b/contrib/lo/lo.sql.in index f043363301..b81b139eb3 100644 --- a/contrib/lo/lo.sql.in +++ b/contrib/lo/lo.sql.in @@ -1,7 +1,7 @@ -- -- PostgreSQL code for LargeObjects -- --- $Id: lo.sql.in,v 1.10 2003/05/14 03:25:56 tgl Exp $ +-- $Id: lo.sql.in,v 1.10.4.1 2005/01/29 22:35:29 tgl Exp $ -- -- -- Create the data type @@ -15,13 +15,13 @@ SET search_path = public; CREATE FUNCTION lo_in(cstring) RETURNS lo AS 'MODULE_PATHNAME' -LANGUAGE 'C' IMMUTABLE; +LANGUAGE C IMMUTABLE STRICT; -- used by the lo type, it returns the oid of the object CREATE FUNCTION lo_out(lo) RETURNS cstring AS 'MODULE_PATHNAME' -LANGUAGE 'C' IMMUTABLE; +LANGUAGE C IMMUTABLE STRICT; -- finally the type itself CREATE TYPE lo ( @@ -35,7 +35,7 @@ CREATE TYPE lo ( CREATE FUNCTION lo_oid(lo) RETURNS oid AS 'MODULE_PATHNAME' -LANGUAGE 'C' IMMUTABLE; +LANGUAGE C IMMUTABLE STRICT; -- same function, named to allow it to be used as a type coercion, eg: -- CREATE TABLE a (image lo); @@ -44,7 +44,7 @@ LANGUAGE 'C' IMMUTABLE; CREATE FUNCTION oid(lo) RETURNS oid AS 'MODULE_PATHNAME', 'lo_oid' -LANGUAGE 'C' IMMUTABLE; +LANGUAGE C IMMUTABLE STRICT; CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT; -- this allows us to convert an oid to a managed lo object @@ -52,11 +52,11 @@ CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT; CREATE FUNCTION lo(oid) RETURNS lo AS 'MODULE_PATHNAME' -LANGUAGE 'C' IMMUTABLE; +LANGUAGE C IMMUTABLE STRICT; CREATE CAST (oid as lo) WITH FUNCTION lo(oid) AS IMPLICIT; -- This is used in triggers CREATE FUNCTION lo_manage() RETURNS trigger AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C; diff --git a/contrib/miscutil/misc_utils.c b/contrib/miscutil/misc_utils.c index 705e89ee0d..00a36e07a6 100644 --- a/contrib/miscutil/misc_utils.c +++ b/contrib/miscutil/misc_utils.c @@ -30,12 +30,9 @@ #include "misc_utils.h" -#undef MIN -#define MIN(x,y) ((x)<=(y) ? (x) : (y)) - int -backend_pid() +backend_pid(void) { return getpid(); } @@ -48,15 +45,15 @@ unlisten(char *relname) } int -max(int x, int y) +int4max(int x, int y) { - return ((x > y) ? x : y); + return Max(x, y); } int -min(int x, int y) +int4min(int x, int y) { - return ((x < y) ? x : y); + return Min(x, y); } /* @@ -84,7 +81,7 @@ active_listeners(text *relname) if (relname && (VARSIZE(relname) > VARHDRSZ)) { MemSet(listen_name, 0, NAMEDATALEN); - len = MIN(VARSIZE(relname) - VARHDRSZ, NAMEDATALEN - 1); + len = Min(VARSIZE(relname) - VARHDRSZ, NAMEDATALEN - 1); memcpy(listen_name, VARDATA(relname), len); ScanKeyEntryInitialize(&key, 0, Anum_pg_listener_relname, @@ -99,7 +96,7 @@ active_listeners(text *relname) { d = heap_getattr(lTuple, Anum_pg_listener_pid, tdesc, &isnull); pid = DatumGetInt32(d); - if ((pid == ourpid) || (kill(pid, SIGTSTP) == 0)) + if ((pid == ourpid) || (kill(pid, 0) == 0)) count++; } heap_endscan(sRel); diff --git a/contrib/miscutil/misc_utils.h b/contrib/miscutil/misc_utils.h index f4577f49de..3de5ac7001 100644 --- a/contrib/miscutil/misc_utils.h +++ b/contrib/miscutil/misc_utils.h @@ -3,8 +3,8 @@ int backend_pid(void); int unlisten(char *relname); -int max(int x, int y); -int min(int x, int y); +int int4max(int x, int y); +int int4min(int x, int y); int active_listeners(text *relname); #endif diff --git a/contrib/miscutil/misc_utils.sql.in b/contrib/miscutil/misc_utils.sql.in index b7e0a8b367..7c1b5bf9cc 100644 --- a/contrib/miscutil/misc_utils.sql.in +++ b/contrib/miscutil/misc_utils.sql.in @@ -36,15 +36,15 @@ LANGUAGE 'SQL'; -- CREATE OR REPLACE FUNCTION min(int4,int4) RETURNS int4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +AS 'MODULE_PATHNAME', 'int4min' +LANGUAGE 'C' STRICT; -- max(x,y) -- CREATE OR REPLACE FUNCTION max(int4,int4) RETURNS int4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +AS 'MODULE_PATHNAME', 'int4max' +LANGUAGE 'C' STRICT; -- Return the number of active listeners on a relation -- diff --git a/contrib/userlock/user_locks.sql.in b/contrib/userlock/user_locks.sql.in index 62689c5543..d5aa355b10 100644 --- a/contrib/userlock/user_locks.sql.in +++ b/contrib/userlock/user_locks.sql.in @@ -15,74 +15,74 @@ SET search_path = public; CREATE OR REPLACE FUNCTION user_lock(int4,int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_unlock(group,id,mode); -- CREATE OR REPLACE FUNCTION user_unlock(int4,int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock(group,id); -- CREATE OR REPLACE FUNCTION user_write_lock(int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock(group,id); -- CREATE OR REPLACE FUNCTION user_write_unlock(int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock(group,oid); -- CREATE OR REPLACE FUNCTION user_write_lock(int4,oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock(group,oid); -- CREATE OR REPLACE FUNCTION user_write_unlock(int4,oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock_oid(oid); -- CREATE OR REPLACE FUNCTION user_write_lock_oid(oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock_oid(oid); -- CREATE OR REPLACE FUNCTION user_write_unlock_oid(oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock_oid(int4); -- CREATE OR REPLACE FUNCTION user_write_lock_oid(int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock_oid(int4); -- CREATE OR REPLACE FUNCTION user_write_unlock_oid(int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_unlock_all(); -- CREATE OR REPLACE FUNCTION user_unlock_all() RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; |