diff options
author | Noah Misch <noah@leadboat.com> | 2014-07-06 00:29:51 -0400 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2014-07-06 00:30:11 -0400 |
commit | 49c279efe7858454114bd304444e95573be0804b (patch) | |
tree | 32d94898357a5c5001b8e4ac079241a0774ffda0 /src/backend/utils/adt/json.c | |
parent | e44964c709b4a5f18d3f9a8fe6d5c259091315c1 (diff) | |
download | postgresql-49c279efe7858454114bd304444e95573be0804b.tar.gz postgresql-49c279efe7858454114bd304444e95573be0804b.zip |
Consistently pass an "unsigned char" to ctype.h functions.
The isxdigit() calls relied on undefined behavior. The isascii() call
was well-defined, but our prevailing style is to include the cast.
Back-patch to 9.4, where the isxdigit() calls were introduced.
Diffstat (limited to 'src/backend/utils/adt/json.c')
-rw-r--r-- | src/backend/utils/adt/json.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c index 972a22f65e5..a64e3c7a613 100644 --- a/src/backend/utils/adt/json.c +++ b/src/backend/utils/adt/json.c @@ -2353,8 +2353,11 @@ escape_json(StringInfo buf, const char *str) * only unicode escape that should be present is \u0000, * all the other unicode escapes will have been resolved. */ - if (p[1] == 'u' && isxdigit(p[2]) && isxdigit(p[3]) - && isxdigit(p[4]) && isxdigit(p[5])) + if (p[1] == 'u' && + isxdigit((unsigned char) p[2]) && + isxdigit((unsigned char) p[3]) && + isxdigit((unsigned char) p[4]) && + isxdigit((unsigned char) p[5])) appendStringInfoCharMacro(buf, *p); else appendStringInfoString(buf, "\\\\"); |