Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit b7d236d

Browse files
committed
Make sure contrib C functions are marked strict where needed.
Kris Jurka
1 parent 750d917 commit b7d236d

File tree

7 files changed

+48
-63
lines changed

7 files changed

+48
-63
lines changed

contrib/chkpass/chkpass.c

+2-17
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* darcy@druid.net
55
* http://www.druid.net/darcy/
66
*
7-
* $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.12 2003/11/29 22:39:18 pgsql Exp $
7+
* $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.13 2005/01/29 22:35:01 tgl Exp $
88
* best viewed with tabs set to 4
99
*/
1010

@@ -82,14 +82,10 @@ chkpass_in(PG_FUNCTION_ARGS)
8282
}
8383

8484
if (verify_pass(str) != 0)
85-
{
8685
ereport(ERROR,
8786
(errcode(ERRCODE_DATA_EXCEPTION),
8887
errmsg("password \"%s\" is weak", str)));
8988

90-
PG_RETURN_POINTER(NULL);
91-
}
92-
9389
result = (chkpass *) palloc(sizeof(chkpass));
9490

9591
mysalt[0] = salt_chars[random() & 0x3f];
@@ -112,9 +108,6 @@ chkpass_out(PG_FUNCTION_ARGS)
112108
chkpass *password = (chkpass *) PG_GETARG_POINTER(0);
113109
char *result;
114110

115-
if (password == NULL)
116-
PG_RETURN_POINTER(NULL);
117-
118111
if ((result = (char *) palloc(16)) != NULL)
119112
{
120113
result[0] = ':';
@@ -134,10 +127,7 @@ Datum
134127
chkpass_rout(PG_FUNCTION_ARGS)
135128
{
136129
chkpass *password = (chkpass *) PG_GETARG_POINTER(0);
137-
text *result = NULL;
138-
139-
if (password == NULL)
140-
PG_RETURN_POINTER(NULL);
130+
text *result;
141131

142132
if ((result = (text *) palloc(VARHDRSZ + 16)) != NULL)
143133
{
@@ -162,9 +152,6 @@ chkpass_eq(PG_FUNCTION_ARGS)
162152
char str[10];
163153
int sz = 8;
164154

165-
if (!a1 || !a2)
166-
PG_RETURN_BOOL(0);
167-
168155
if (a2->vl_len < 12)
169156
sz = a2->vl_len - 4;
170157
strncpy(str, a2->vl_dat, sz);
@@ -181,8 +168,6 @@ chkpass_ne(PG_FUNCTION_ARGS)
181168
char str[10];
182169
int sz = 8;
183170

184-
if (!a1 || !a2)
185-
PG_RETURN_BOOL(0);
186171
if (a2->vl_len < 12)
187172
sz = a2->vl_len - 4;
188173
strncpy(str, a2->vl_dat, sz);

contrib/chkpass/chkpass.sql.in

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
-- darcy@druid.net
55
-- http://www.druid.net/darcy/
66
--
7-
-- $PostgreSQL: pgsql/contrib/chkpass/chkpass.sql.in,v 1.5 2003/11/29 19:51:19 pgsql Exp $
7+
-- $PostgreSQL: pgsql/contrib/chkpass/chkpass.sql.in,v 1.6 2005/01/29 22:35:01 tgl Exp $
88
--
99
-- best viewed with tabs set to 4
1010
--
@@ -19,12 +19,12 @@ SET search_path = public;
1919
CREATE FUNCTION chkpass_in(cstring)
2020
RETURNS chkpass
2121
AS 'MODULE_PATHNAME'
22-
LANGUAGE 'c';
22+
LANGUAGE C STRICT;
2323

2424
CREATE FUNCTION chkpass_out(chkpass)
2525
RETURNS cstring
2626
AS 'MODULE_PATHNAME'
27-
LANGUAGE 'c';
27+
LANGUAGE C STRICT;
2828

2929
CREATE TYPE chkpass (
3030
internallength = 16,
@@ -36,7 +36,7 @@ CREATE TYPE chkpass (
3636
CREATE FUNCTION raw(chkpass)
3737
RETURNS text
3838
AS 'MODULE_PATHNAME', 'chkpass_rout'
39-
LANGUAGE 'c';
39+
LANGUAGE C STRICT;
4040

4141
--
4242
-- The various boolean tests:
@@ -45,12 +45,12 @@ CREATE FUNCTION raw(chkpass)
4545
CREATE FUNCTION eq(chkpass, text)
4646
RETURNS bool
4747
AS 'MODULE_PATHNAME', 'chkpass_eq'
48-
LANGUAGE 'c';
48+
LANGUAGE C STRICT;
4949

5050
CREATE FUNCTION ne(chkpass, text)
5151
RETURNS bool
5252
AS 'MODULE_PATHNAME', 'chkpass_ne'
53-
LANGUAGE 'c';
53+
LANGUAGE C STRICT;
5454

5555
--
5656
-- Now the operators. Note how some of the parameters to some

contrib/isbn_issn/isbn_issn.sql.in

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
--
22
-- PostgreSQL code for ISSNs.
33
--
4-
-- $PostgreSQL: pgsql/contrib/isbn_issn/isbn_issn.sql.in,v 1.10 2003/11/29 22:39:20 pgsql Exp $
4+
-- $PostgreSQL: pgsql/contrib/isbn_issn/isbn_issn.sql.in,v 1.11 2005/01/29 22:35:02 tgl Exp $
55
--
66

77
-- Adjust this setting to control where the objects get created.
@@ -14,12 +14,12 @@ SET search_path = public;
1414
CREATE FUNCTION issn_in(cstring)
1515
RETURNS issn
1616
AS 'MODULE_PATHNAME'
17-
LANGUAGE 'C';
17+
LANGUAGE C STRICT;
1818

1919
CREATE FUNCTION issn_out(issn)
2020
RETURNS cstring
2121
AS 'MODULE_PATHNAME'
22-
LANGUAGE 'C';
22+
LANGUAGE C STRICT;
2323

2424
CREATE TYPE issn (
2525
INTERNALLENGTH = 16,
@@ -39,32 +39,32 @@ COMMENT ON TYPE issn
3939
CREATE FUNCTION issn_lt(issn, issn)
4040
RETURNS bool
4141
AS 'MODULE_PATHNAME'
42-
LANGUAGE 'C';
42+
LANGUAGE C STRICT;
4343

4444
CREATE FUNCTION issn_le(issn, issn)
4545
RETURNS bool
4646
AS 'MODULE_PATHNAME'
47-
LANGUAGE 'C';
47+
LANGUAGE C STRICT;
4848

4949
CREATE FUNCTION issn_eq(issn, issn)
5050
RETURNS bool
5151
AS 'MODULE_PATHNAME'
52-
LANGUAGE 'C';
52+
LANGUAGE C STRICT;
5353

5454
CREATE FUNCTION issn_ge(issn, issn)
5555
RETURNS bool
5656
AS 'MODULE_PATHNAME'
57-
LANGUAGE 'C';
57+
LANGUAGE C STRICT;
5858

5959
CREATE FUNCTION issn_gt(issn, issn)
6060
RETURNS bool
6161
AS 'MODULE_PATHNAME'
62-
LANGUAGE 'C';
62+
LANGUAGE C STRICT;
6363

6464
CREATE FUNCTION issn_ne(issn, issn)
6565
RETURNS bool
6666
AS 'MODULE_PATHNAME'
67-
LANGUAGE 'C';
67+
LANGUAGE C STRICT;
6868

6969
--
7070
-- Now the operators. Note how some of the parameters to some
@@ -120,7 +120,7 @@ CREATE OPERATOR <> (
120120
CREATE FUNCTION issn_cmp(issn, issn)
121121
RETURNS integer
122122
AS '$libdir/isbn_issn'
123-
LANGUAGE c;
123+
LANGUAGE c STRICT;
124124

125125
-- Create default operator class for 'issn' --
126126
-- Needed to create index or primary key --
@@ -147,12 +147,12 @@ AS
147147
CREATE FUNCTION isbn_in(cstring)
148148
RETURNS isbn
149149
AS 'MODULE_PATHNAME'
150-
LANGUAGE 'C';
150+
LANGUAGE C STRICT;
151151

152152
CREATE FUNCTION isbn_out(isbn)
153153
RETURNS cstring
154154
AS 'MODULE_PATHNAME'
155-
LANGUAGE 'C';
155+
LANGUAGE C STRICT;
156156

157157
CREATE TYPE isbn (
158158
INTERNALLENGTH = 16,
@@ -171,32 +171,32 @@ COMMENT ON TYPE isbn IS 'International Standard Book Number';
171171
CREATE FUNCTION isbn_lt(isbn, isbn)
172172
RETURNS bool
173173
AS 'MODULE_PATHNAME'
174-
LANGUAGE 'C';
174+
LANGUAGE C STRICT;
175175

176176
CREATE FUNCTION isbn_le(isbn, isbn)
177177
RETURNS bool
178178
AS 'MODULE_PATHNAME'
179-
LANGUAGE 'C';
179+
LANGUAGE C STRICT;
180180

181181
CREATE FUNCTION isbn_eq(isbn, isbn)
182182
RETURNS bool
183183
AS 'MODULE_PATHNAME'
184-
LANGUAGE 'C';
184+
LANGUAGE C STRICT;
185185

186186
CREATE FUNCTION isbn_ge(isbn, isbn)
187187
RETURNS bool
188188
AS 'MODULE_PATHNAME'
189-
LANGUAGE 'C';
189+
LANGUAGE C STRICT;
190190

191191
CREATE FUNCTION isbn_gt(isbn, isbn)
192192
RETURNS bool
193193
AS 'MODULE_PATHNAME'
194-
LANGUAGE 'C';
194+
LANGUAGE C STRICT;
195195

196196
CREATE FUNCTION isbn_ne(isbn, isbn)
197197
RETURNS bool
198198
AS 'MODULE_PATHNAME'
199-
LANGUAGE 'C';
199+
LANGUAGE C STRICT;
200200

201201
--
202202
-- Now the operators. Note how some of the parameters to some
@@ -253,7 +253,7 @@ CREATE OPERATOR <> (
253253
CREATE FUNCTION isbn_cmp(isbn, isbn)
254254
RETURNS integer
255255
AS '$libdir/isbn_issn'
256-
LANGUAGE c;
256+
LANGUAGE c STRICT;
257257

258258
-- Create default operator class for 'isbn' --
259259
-- Needed to create index or primary key --

contrib/lo/lo.sql.in

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
--
22
-- PostgreSQL code for LargeObjects
33
--
4-
-- $PostgreSQL: pgsql/contrib/lo/lo.sql.in,v 1.11 2003/11/29 22:39:22 pgsql Exp $
4+
-- $PostgreSQL: pgsql/contrib/lo/lo.sql.in,v 1.12 2005/01/29 22:35:02 tgl Exp $
55
--
66
--
77
-- Create the data type
@@ -15,13 +15,13 @@ SET search_path = public;
1515
CREATE FUNCTION lo_in(cstring)
1616
RETURNS lo
1717
AS 'MODULE_PATHNAME'
18-
LANGUAGE 'C' IMMUTABLE;
18+
LANGUAGE C IMMUTABLE STRICT;
1919

2020
-- used by the lo type, it returns the oid of the object
2121
CREATE FUNCTION lo_out(lo)
2222
RETURNS cstring
2323
AS 'MODULE_PATHNAME'
24-
LANGUAGE 'C' IMMUTABLE;
24+
LANGUAGE C IMMUTABLE STRICT;
2525

2626
-- finally the type itself
2727
CREATE TYPE lo (
@@ -35,7 +35,7 @@ CREATE TYPE lo (
3535
CREATE FUNCTION lo_oid(lo)
3636
RETURNS oid
3737
AS 'MODULE_PATHNAME'
38-
LANGUAGE 'C' IMMUTABLE;
38+
LANGUAGE C IMMUTABLE STRICT;
3939

4040
-- same function, named to allow it to be used as a type coercion, eg:
4141
-- CREATE TABLE a (image lo);
@@ -44,19 +44,19 @@ LANGUAGE 'C' IMMUTABLE;
4444
CREATE FUNCTION oid(lo)
4545
RETURNS oid
4646
AS 'MODULE_PATHNAME', 'lo_oid'
47-
LANGUAGE 'C' IMMUTABLE;
47+
LANGUAGE C IMMUTABLE STRICT;
4848
CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT;
4949

5050
-- this allows us to convert an oid to a managed lo object
5151
-- ie: insert into test values (lo_import('/fullpath/file')::lo);
5252
CREATE FUNCTION lo(oid)
5353
RETURNS lo
5454
AS 'MODULE_PATHNAME'
55-
LANGUAGE 'C' IMMUTABLE;
55+
LANGUAGE C IMMUTABLE STRICT;
5656
CREATE CAST (oid as lo) WITH FUNCTION lo(oid) AS IMPLICIT;
5757

5858
-- This is used in triggers
5959
CREATE FUNCTION lo_manage()
6060
RETURNS trigger
6161
AS 'MODULE_PATHNAME'
62-
LANGUAGE 'C';
62+
LANGUAGE C;

contrib/miscutil/misc_utils.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ active_listeners(text *relname)
9696
{
9797
d = heap_getattr(lTuple, Anum_pg_listener_pid, tdesc, &isnull);
9898
pid = DatumGetInt32(d);
99-
if ((pid == ourpid) || (kill(pid, SIGTSTP) == 0))
99+
if ((pid == ourpid) || (kill(pid, 0) == 0))
100100
count++;
101101
}
102102
heap_endscan(sRel);

contrib/miscutil/misc_utils.sql.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ LANGUAGE 'SQL';
3737
CREATE OR REPLACE FUNCTION min(int4,int4)
3838
RETURNS int4
3939
AS 'MODULE_PATHNAME', 'int4min'
40-
LANGUAGE 'C';
40+
LANGUAGE 'C' STRICT;
4141

4242
-- max(x,y)
4343
--
4444
CREATE OR REPLACE FUNCTION max(int4,int4)
4545
RETURNS int4
4646
AS 'MODULE_PATHNAME', 'int4max'
47-
LANGUAGE 'C';
47+
LANGUAGE 'C' STRICT;
4848

4949
-- Return the number of active listeners on a relation
5050
--

0 commit comments

Comments
 (0)