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

Lines changed: 2 additions & 17 deletions
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

Lines changed: 6 additions & 6 deletions
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

Lines changed: 19 additions & 19 deletions
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

Lines changed: 7 additions & 7 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy