Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3eb1bc6

Browse files
author
Thomas G. Lockhart
committed
Check explicitly for valid input strings for both TRUE and FALSE.
Allow true/false, yes/no, 1/0. Throw elog warning if anything else.Allow shorter strings, so "t", "tr", "tru" and "true" match "true".Old behavior accepted anything starting with "t" as TRUE, everything else as FALSE.
1 parent200bc52 commit3eb1bc6

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

‎src/backend/utils/adt/bool.c

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/utils/adt/bool.c,v 1.8 1997/10/17 05:38:32 thomas Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/utils/adt/bool.c,v 1.9 1997/10/25 05:09:58 thomas Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
1414

15+
#include<string.h>
1516
#include"postgres.h"
1617

1718
#include"utils/builtins.h"/* where the declarations go */
@@ -26,10 +27,6 @@
2627
*
2728
* Check explicitly for "true/false" and TRUE/FALSE, 1/0, YES/NO.
2829
* Reject other values. - thomas 1997-10-05
29-
* For now, allow old behavior of everything FALSE if not TRUE.
30-
* After v6.2.1 release, then enable code to reject goofy values.
31-
* Also, start checking the entire string rather than just the first character.
32-
* - thomas 1997-10-16
3330
*
3431
* In the switch statement, check the most-used possibilities first.
3532
*/
@@ -39,33 +36,43 @@ boolin(char *b)
3936
switch(*b) {
4037
case't':
4138
case'T':
42-
return (TRUE);
39+
if (strncasecmp(b,"true",strlen(b))==0)
40+
return (TRUE);
4341
break;
4442

4543
case'f':
4644
case'F':
47-
return (FALSE);
45+
if (strncasecmp(b,"false",strlen(b))==0)
46+
return (FALSE);
4847
break;
4948

5049
case'y':
5150
case'Y':
51+
if (strncasecmp(b,"yes",strlen(b))==0)
52+
return (TRUE);
53+
break;
54+
5255
case'1':
53-
return (TRUE);
56+
if (strncasecmp(b,"1",strlen(b))==0)
57+
return (TRUE);
5458
break;
5559

5660
case'n':
5761
case'N':
62+
if (strncasecmp(b,"no",strlen(b))==0)
63+
return (FALSE);
64+
break;
65+
5866
case'0':
59-
return (FALSE);
67+
if (strncasecmp(b,"0",strlen(b))==0)
68+
return (FALSE);
6069
break;
6170

6271
default:
63-
#ifFALSE
64-
elog(WARN,"Invalid input string '%s'\n",b);
65-
#endif
6672
break;
6773
}
6874

75+
elog(WARN,"Invalid input string '%s'\n",b);
6976
return (FALSE);
7077
}/* boolin() */
7178

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp