Re: control character check in JSON type seems broken

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: control character check in JSON type seems broken
Date: 2012-06-05 00:48:09
Message-ID: 21413.1338857289@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Shigeru Hanada <shigeru(dot)hanada(at)gmail(dot)com> writes:
> json_lex_string() misjudges that the token "" contains naked
> (not-escaped) control character, because its first byte is 0xe3 and it's
> -29 for signed char interpreting, and it's less than 32. We need to
> cast to unsigned char (or use unsigned variable) here.

Yeah, that's wrong.

> In addition, error message above seems corrupted in my environment.
> Here we check not-escaped control character, so printing it with %c
> formatting might break log files. How about using decimal or hex dump
> in such cases?

And so is that. IMO the error reporting in this module could stand to
be reviewed altogether for compliance with our message guidelines.
(For starters, why is it using errdetail_internal?) I refrained from
editorializing on-the-fly, but I'm not too pleased with what I saw.

Patch applied, thanks!

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message jeremie.thomassey 2012-06-05 07:15:22 BUG #6675: Box overlap with infinity edge
Previous Message Tom Lane 2012-06-05 00:16:25 Re: Calling xlst_process with certain arguments causes server crash