Re: Re: [COMMITTERS] pgsql: Force strings passed to and from plperl to be in UTF8 encoding.
Alex Hunsaker <badalex@gmail.com>
From: Alex Hunsaker <badalex@gmail.com>
To: Amit Khandekar <amit.khandekar@enterprisedb.com>
Cc: Andrew Dunstan <andrew@dunslane.net>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2011-10-05T06:59:47Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Force strings passed to and from plperl to be in UTF8 encoding.
- 50d89d422f9c 9.1.0 cited
Attachments
- plperl_verify_utf_u2e_v3.patch (text/x-patch) patch v3
On Wed, Oct 5, 2011 at 00:30, Alex Hunsaker <badalex@gmail.com> wrote:
> On Tue, Oct 4, 2011 at 23:46, Amit Khandekar
> <amit.khandekar@enterprisedb.com> wrote:
>> You mean the final changes in plperl_helpers.h would look like
>> something like this right? :
>>
>> static inline char *
>> utf_u2e(const char *utf8_str, size_t len)
>> {
>> char *ret = (char *) pg_do_encoding_conversion((unsigned
>> char *) utf8_str, len, PG_UTF8, GetDatabaseEncoding());
>>
>> if (ret == utf8_str)
>> + {
>> + if (GetDatabaseEncoding() == PG_UTF8 ||
>> + GetDatabaseEncoding() == PG_SQL_ASCII)
>> + {
>> + pg_verify_mbstr_len(PG_UTF8, utf8_str, len, false);
>> + }
>> +
>> ret = pstrdup(ret);
>> + }
>> return ret;
>> }
>
>> Yeah I am ok with that. It's just an additional check besides (ret ==
>> utf8_str) to know if we really require validation.
Find it attached. [ Note I didn't put the check inside the if (ret ==
utf8_str) as it seemed a bit cleaner (indentation wise) to have it
outside ]