Skip to content

Commit 0d65eea

Browse files
committed
Replace argument-checking Asserts with regular test-and-elog checks in all
encoding conversion functions. These are not can't-happen cases because it's possible to create a conversion with the wrong conversion function for the specified encoding pair. That would lead to an Assert crash in an Assert-enabled build, or incorrect conversion otherwise, neither of which is desirable. This would be a DOS issue if production databases were customarily built with asserts enabled, but fortunately that's not so. Per an observation by Heikki. Back-patch to all supported branches.
1 parent b5b3134 commit 0d65eea

File tree

28 files changed

+166
-282
lines changed

28 files changed

+166
-282
lines changed

src/backend/utils/mb/conversion_procs/ascii_and_mic/ascii_and_mic.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1994, Regents of the University of California
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/ascii_and_mic/ascii_and_mic.c,v 1.15 2009/01/01 17:23:51 momjian Exp $
9+
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/ascii_and_mic/ascii_and_mic.c,v 1.16 2009/01/29 19:23:39 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -41,9 +41,7 @@ ascii_to_mic(PG_FUNCTION_ARGS)
4141
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
4242
int len = PG_GETARG_INT32(4);
4343

44-
Assert(PG_GETARG_INT32(0) == PG_SQL_ASCII);
45-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
46-
Assert(len >= 0);
44+
CHECK_ENCODING_CONVERSION_ARGS(PG_SQL_ASCII, PG_MULE_INTERNAL);
4745

4846
pg_ascii2mic(src, dest, len);
4947

@@ -57,9 +55,7 @@ mic_to_ascii(PG_FUNCTION_ARGS)
5755
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
5856
int len = PG_GETARG_INT32(4);
5957

60-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
61-
Assert(PG_GETARG_INT32(1) == PG_SQL_ASCII);
62-
Assert(len >= 0);
58+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_SQL_ASCII);
6359

6460
pg_mic2ascii(src, dest, len);
6561

src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c

Lines changed: 21 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1994, Regents of the University of California
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c,v 1.18 2009/01/01 17:23:51 momjian Exp $
9+
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c,v 1.19 2009/01/29 19:23:39 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -88,9 +88,7 @@ koi8r_to_mic(PG_FUNCTION_ARGS)
8888
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
8989
int len = PG_GETARG_INT32(4);
9090

91-
Assert(PG_GETARG_INT32(0) == PG_KOI8R);
92-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
93-
Assert(len >= 0);
91+
CHECK_ENCODING_CONVERSION_ARGS(PG_KOI8R, PG_MULE_INTERNAL);
9492

9593
koi8r2mic(src, dest, len);
9694

@@ -104,9 +102,7 @@ mic_to_koi8r(PG_FUNCTION_ARGS)
104102
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
105103
int len = PG_GETARG_INT32(4);
106104

107-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
108-
Assert(PG_GETARG_INT32(1) == PG_KOI8R);
109-
Assert(len >= 0);
105+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_KOI8R);
110106

111107
mic2koi8r(src, dest, len);
112108

@@ -120,9 +116,7 @@ iso_to_mic(PG_FUNCTION_ARGS)
120116
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
121117
int len = PG_GETARG_INT32(4);
122118

123-
Assert(PG_GETARG_INT32(0) == PG_ISO_8859_5);
124-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
125-
Assert(len >= 0);
119+
CHECK_ENCODING_CONVERSION_ARGS(PG_ISO_8859_5, PG_MULE_INTERNAL);
126120

127121
iso2mic(src, dest, len);
128122

@@ -136,9 +130,7 @@ mic_to_iso(PG_FUNCTION_ARGS)
136130
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
137131
int len = PG_GETARG_INT32(4);
138132

139-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
140-
Assert(PG_GETARG_INT32(1) == PG_ISO_8859_5);
141-
Assert(len >= 0);
133+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_ISO_8859_5);
142134

143135
mic2iso(src, dest, len);
144136

@@ -152,9 +144,7 @@ win1251_to_mic(PG_FUNCTION_ARGS)
152144
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
153145
int len = PG_GETARG_INT32(4);
154146

155-
Assert(PG_GETARG_INT32(0) == PG_WIN1251);
156-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
157-
Assert(len >= 0);
147+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN1251, PG_MULE_INTERNAL);
158148

159149
win12512mic(src, dest, len);
160150

@@ -168,9 +158,7 @@ mic_to_win1251(PG_FUNCTION_ARGS)
168158
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
169159
int len = PG_GETARG_INT32(4);
170160

171-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
172-
Assert(PG_GETARG_INT32(1) == PG_WIN1251);
173-
Assert(len >= 0);
161+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_WIN1251);
174162

175163
mic2win1251(src, dest, len);
176164

@@ -184,9 +172,7 @@ win866_to_mic(PG_FUNCTION_ARGS)
184172
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
185173
int len = PG_GETARG_INT32(4);
186174

187-
Assert(PG_GETARG_INT32(0) == PG_WIN866);
188-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
189-
Assert(len >= 0);
175+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN866, PG_MULE_INTERNAL);
190176

191177
win8662mic(src, dest, len);
192178

@@ -200,9 +186,7 @@ mic_to_win866(PG_FUNCTION_ARGS)
200186
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
201187
int len = PG_GETARG_INT32(4);
202188

203-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
204-
Assert(PG_GETARG_INT32(1) == PG_WIN866);
205-
Assert(len >= 0);
189+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_WIN866);
206190

207191
mic2win866(src, dest, len);
208192

@@ -217,9 +201,7 @@ koi8r_to_win1251(PG_FUNCTION_ARGS)
217201
int len = PG_GETARG_INT32(4);
218202
unsigned char *buf;
219203

220-
Assert(PG_GETARG_INT32(0) == PG_KOI8R);
221-
Assert(PG_GETARG_INT32(1) == PG_WIN1251);
222-
Assert(len >= 0);
204+
CHECK_ENCODING_CONVERSION_ARGS(PG_KOI8R, PG_WIN1251);
223205

224206
buf = palloc(len * ENCODING_GROWTH_RATE);
225207
koi8r2mic(src, buf, len);
@@ -237,9 +219,7 @@ win1251_to_koi8r(PG_FUNCTION_ARGS)
237219
int len = PG_GETARG_INT32(4);
238220
unsigned char *buf;
239221

240-
Assert(PG_GETARG_INT32(0) == PG_WIN1251);
241-
Assert(PG_GETARG_INT32(1) == PG_KOI8R);
242-
Assert(len >= 0);
222+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN1251, PG_KOI8R);
243223

244224
buf = palloc(len * ENCODING_GROWTH_RATE);
245225
win12512mic(src, buf, len);
@@ -257,9 +237,7 @@ koi8r_to_win866(PG_FUNCTION_ARGS)
257237
int len = PG_GETARG_INT32(4);
258238
unsigned char *buf;
259239

260-
Assert(PG_GETARG_INT32(0) == PG_KOI8R);
261-
Assert(PG_GETARG_INT32(1) == PG_WIN866);
262-
Assert(len >= 0);
240+
CHECK_ENCODING_CONVERSION_ARGS(PG_KOI8R, PG_WIN866);
263241

264242
buf = palloc(len * ENCODING_GROWTH_RATE);
265243
koi8r2mic(src, buf, len);
@@ -277,9 +255,7 @@ win866_to_koi8r(PG_FUNCTION_ARGS)
277255
int len = PG_GETARG_INT32(4);
278256
unsigned char *buf;
279257

280-
Assert(PG_GETARG_INT32(0) == PG_WIN866);
281-
Assert(PG_GETARG_INT32(1) == PG_KOI8R);
282-
Assert(len >= 0);
258+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN866, PG_KOI8R);
283259

284260
buf = palloc(len * ENCODING_GROWTH_RATE);
285261
win8662mic(src, buf, len);
@@ -297,9 +273,7 @@ win866_to_win1251(PG_FUNCTION_ARGS)
297273
int len = PG_GETARG_INT32(4);
298274
unsigned char *buf;
299275

300-
Assert(PG_GETARG_INT32(0) == PG_WIN866);
301-
Assert(PG_GETARG_INT32(1) == PG_WIN1251);
302-
Assert(len >= 0);
276+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN866, PG_WIN1251);
303277

304278
/*
305279
* Note: There are a few characters like the "Numero" sign that exist in
@@ -323,9 +297,7 @@ win1251_to_win866(PG_FUNCTION_ARGS)
323297
int len = PG_GETARG_INT32(4);
324298
unsigned char *buf;
325299

326-
Assert(PG_GETARG_INT32(0) == PG_WIN1251);
327-
Assert(PG_GETARG_INT32(1) == PG_WIN866);
328-
Assert(len >= 0);
300+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN1251, PG_WIN866);
329301

330302
/* Use mic/KOI8R as intermediary, see comment in win866_to_win1251() */
331303
buf = palloc(len * ENCODING_GROWTH_RATE);
@@ -344,9 +316,7 @@ iso_to_koi8r(PG_FUNCTION_ARGS)
344316
int len = PG_GETARG_INT32(4);
345317
unsigned char *buf;
346318

347-
Assert(PG_GETARG_INT32(0) == PG_ISO_8859_5);
348-
Assert(PG_GETARG_INT32(1) == PG_KOI8R);
349-
Assert(len >= 0);
319+
CHECK_ENCODING_CONVERSION_ARGS(PG_ISO_8859_5, PG_KOI8R);
350320

351321
buf = palloc(len * ENCODING_GROWTH_RATE);
352322
iso2mic(src, buf, len);
@@ -364,9 +334,7 @@ koi8r_to_iso(PG_FUNCTION_ARGS)
364334
int len = PG_GETARG_INT32(4);
365335
unsigned char *buf;
366336

367-
Assert(PG_GETARG_INT32(0) == PG_KOI8R);
368-
Assert(PG_GETARG_INT32(1) == PG_ISO_8859_5);
369-
Assert(len >= 0);
337+
CHECK_ENCODING_CONVERSION_ARGS(PG_KOI8R, PG_ISO_8859_5);
370338

371339
buf = palloc(len * ENCODING_GROWTH_RATE);
372340
koi8r2mic(src, buf, len);
@@ -384,9 +352,7 @@ iso_to_win1251(PG_FUNCTION_ARGS)
384352
int len = PG_GETARG_INT32(4);
385353
unsigned char *buf;
386354

387-
Assert(PG_GETARG_INT32(0) == PG_ISO_8859_5);
388-
Assert(PG_GETARG_INT32(1) == PG_WIN1251);
389-
Assert(len >= 0);
355+
CHECK_ENCODING_CONVERSION_ARGS(PG_ISO_8859_5, PG_WIN1251);
390356

391357
/* Use mic/KOI8R as intermediary, see comment in win866_to_win1251() */
392358
buf = palloc(len * ENCODING_GROWTH_RATE);
@@ -405,9 +371,7 @@ win1251_to_iso(PG_FUNCTION_ARGS)
405371
int len = PG_GETARG_INT32(4);
406372
unsigned char *buf;
407373

408-
Assert(PG_GETARG_INT32(0) == PG_WIN1251);
409-
Assert(PG_GETARG_INT32(1) == PG_ISO_8859_5);
410-
Assert(len >= 0);
374+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN1251, PG_ISO_8859_5);
411375

412376
/* Use mic/KOI8R as intermediary, see comment in win866_to_win1251() */
413377
buf = palloc(len * ENCODING_GROWTH_RATE);
@@ -426,9 +390,7 @@ iso_to_win866(PG_FUNCTION_ARGS)
426390
int len = PG_GETARG_INT32(4);
427391
unsigned char *buf;
428392

429-
Assert(PG_GETARG_INT32(0) == PG_ISO_8859_5);
430-
Assert(PG_GETARG_INT32(1) == PG_WIN866);
431-
Assert(len >= 0);
393+
CHECK_ENCODING_CONVERSION_ARGS(PG_ISO_8859_5, PG_WIN866);
432394

433395
/* Use mic/KOI8R as intermediary, see comment in win866_to_win1251() */
434396
buf = palloc(len * ENCODING_GROWTH_RATE);
@@ -447,9 +409,7 @@ win866_to_iso(PG_FUNCTION_ARGS)
447409
int len = PG_GETARG_INT32(4);
448410
unsigned char *buf;
449411

450-
Assert(PG_GETARG_INT32(0) == PG_WIN866);
451-
Assert(PG_GETARG_INT32(1) == PG_ISO_8859_5);
452-
Assert(len >= 0);
412+
CHECK_ENCODING_CONVERSION_ARGS(PG_WIN866, PG_ISO_8859_5);
453413

454414
/* Use mic/KOI8R as intermediary, see comment in win866_to_win1251() */
455415
buf = palloc(len * ENCODING_GROWTH_RATE);

src/backend/utils/mb/conversion_procs/euc_cn_and_mic/euc_cn_and_mic.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1994, Regents of the University of California
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/euc_cn_and_mic/euc_cn_and_mic.c,v 1.18 2009/01/01 17:23:51 momjian Exp $
9+
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/euc_cn_and_mic/euc_cn_and_mic.c,v 1.19 2009/01/29 19:23:39 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -44,9 +44,7 @@ euc_cn_to_mic(PG_FUNCTION_ARGS)
4444
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
4545
int len = PG_GETARG_INT32(4);
4646

47-
Assert(PG_GETARG_INT32(0) == PG_EUC_CN);
48-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
49-
Assert(len >= 0);
47+
CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_CN, PG_MULE_INTERNAL);
5048

5149
euc_cn2mic(src, dest, len);
5250

@@ -60,9 +58,7 @@ mic_to_euc_cn(PG_FUNCTION_ARGS)
6058
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
6159
int len = PG_GETARG_INT32(4);
6260

63-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
64-
Assert(PG_GETARG_INT32(1) == PG_EUC_CN);
65-
Assert(len >= 0);
61+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_EUC_CN);
6662

6763
mic2euc_cn(src, dest, len);
6864

src/backend/utils/mb/conversion_procs/euc_jis_2004_and_shift_jis_2004/euc_jis_2004_and_shift_jis_2004.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Copyright (c) 2007-2009, PostgreSQL Global Development Group
66
*
77
* IDENTIFICATION
8-
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/euc_jis_2004_and_shift_jis_2004/euc_jis_2004_and_shift_jis_2004.c,v 1.5 2009/01/01 17:23:51 momjian Exp $
8+
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/euc_jis_2004_and_shift_jis_2004/euc_jis_2004_and_shift_jis_2004.c,v 1.6 2009/01/29 19:23:39 tgl Exp $
99
*
1010
*-------------------------------------------------------------------------
1111
*/
@@ -43,9 +43,7 @@ euc_jis_2004_to_shift_jis_2004(PG_FUNCTION_ARGS)
4343
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
4444
int len = PG_GETARG_INT32(4);
4545

46-
Assert(PG_GETARG_INT32(0) == PG_EUC_JIS_2004);
47-
Assert(PG_GETARG_INT32(1) == PG_SHIFT_JIS_2004);
48-
Assert(len >= 0);
46+
CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_JIS_2004, PG_SHIFT_JIS_2004);
4947

5048
euc_jis_20042shift_jis_2004(src, dest, len);
5149

@@ -59,9 +57,7 @@ shift_jis_2004_to_euc_jis_2004(PG_FUNCTION_ARGS)
5957
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
6058
int len = PG_GETARG_INT32(4);
6159

62-
Assert(PG_GETARG_INT32(0) == PG_SHIFT_JIS_2004);
63-
Assert(PG_GETARG_INT32(1) == PG_EUC_JIS_2004);
64-
Assert(len >= 0);
60+
CHECK_ENCODING_CONVERSION_ARGS(PG_SHIFT_JIS_2004, PG_EUC_JIS_2004);
6561

6662
shift_jis_20042euc_jis_2004(src, dest, len);
6763

src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/euc_jp_and_sjis.c

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Portions Copyright (c) 1994, Regents of the University of California
77
*
88
* IDENTIFICATION
9-
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/euc_jp_and_sjis.c,v 1.20 2009/01/01 17:23:51 momjian Exp $
9+
* $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/euc_jp_and_sjis/euc_jp_and_sjis.c,v 1.21 2009/01/29 19:23:39 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -70,9 +70,7 @@ euc_jp_to_sjis(PG_FUNCTION_ARGS)
7070
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
7171
int len = PG_GETARG_INT32(4);
7272

73-
Assert(PG_GETARG_INT32(0) == PG_EUC_JP);
74-
Assert(PG_GETARG_INT32(1) == PG_SJIS);
75-
Assert(len >= 0);
73+
CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_JP, PG_SJIS);
7674

7775
euc_jp2sjis(src, dest, len);
7876

@@ -86,9 +84,7 @@ sjis_to_euc_jp(PG_FUNCTION_ARGS)
8684
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
8785
int len = PG_GETARG_INT32(4);
8886

89-
Assert(PG_GETARG_INT32(0) == PG_SJIS);
90-
Assert(PG_GETARG_INT32(1) == PG_EUC_JP);
91-
Assert(len >= 0);
87+
CHECK_ENCODING_CONVERSION_ARGS(PG_SJIS, PG_EUC_JP);
9288

9389
sjis2euc_jp(src, dest, len);
9490

@@ -102,9 +98,7 @@ euc_jp_to_mic(PG_FUNCTION_ARGS)
10298
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
10399
int len = PG_GETARG_INT32(4);
104100

105-
Assert(PG_GETARG_INT32(0) == PG_EUC_JP);
106-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
107-
Assert(len >= 0);
101+
CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_JP, PG_MULE_INTERNAL);
108102

109103
euc_jp2mic(src, dest, len);
110104

@@ -118,9 +112,7 @@ mic_to_euc_jp(PG_FUNCTION_ARGS)
118112
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
119113
int len = PG_GETARG_INT32(4);
120114

121-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
122-
Assert(PG_GETARG_INT32(1) == PG_EUC_JP);
123-
Assert(len >= 0);
115+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_EUC_JP);
124116

125117
mic2euc_jp(src, dest, len);
126118

@@ -134,9 +126,7 @@ sjis_to_mic(PG_FUNCTION_ARGS)
134126
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
135127
int len = PG_GETARG_INT32(4);
136128

137-
Assert(PG_GETARG_INT32(0) == PG_SJIS);
138-
Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
139-
Assert(len >= 0);
129+
CHECK_ENCODING_CONVERSION_ARGS(PG_SJIS, PG_MULE_INTERNAL);
140130

141131
sjis2mic(src, dest, len);
142132

@@ -150,9 +140,7 @@ mic_to_sjis(PG_FUNCTION_ARGS)
150140
unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3);
151141
int len = PG_GETARG_INT32(4);
152142

153-
Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
154-
Assert(PG_GETARG_INT32(1) == PG_SJIS);
155-
Assert(len >= 0);
143+
CHECK_ENCODING_CONVERSION_ARGS(PG_MULE_INTERNAL, PG_SJIS);
156144

157145
mic2sjis(src, dest, len);
158146

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