Re: [BUGS] BUG #5487: dblink failed with 63 bytes connection names

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: [BUGS] BUG #5487: dblink failed with 63 bytes connection names
Дата
Msg-id 4C04CC27.8090006@enterprisedb.com
обсуждение исходный текст
Ответ на Re: [BUGS] BUG #5487: dblink failed with 63 bytes connection names  (Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp>)
Ответы Re: [BUGS] BUG #5487: dblink failed with 63 bytes connection names  (Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp>)
Список pgsql-hackers
On 01/06/10 05:55, Takahiro Itagaki wrote:
> "Takahiro Itagaki"<itagaki.takahiro@oss.ntt.co.jp>  wrote:
>>
>> Contib/dblink module seems to have a bug in handling
>> connection names in NAMEDATALEN-1 bytes.
>
> Here is a patch to fix the bug. I think it comes from wrong usage
> of snprintf(NAMEDATALEN - 1). It just copies 62 bytes + \0.
>
> In addition, it should be safe to use pg_mbcliplen() to truncate
> extra bytes in connection names because we might return invalid
> text when a multibyte character is at 62 or 63 bytes.

Hmm, seems that dblink should call truncate_identifier() for the 
truncation, to be consistent with truncation of table names etc.

I also spotted this in dblink.c:

>     /* first gather the server connstr options */
>     if (strlen(servername) < NAMEDATALEN)
>         foreign_server = GetForeignServerByName(servername, true);

I think that's wrong. We normally consistently truncate identifiers at 
creation and at use, so that if you create an object with a very long 
name and it's truncated, you can still refer to it with the untruncated 
name because all such references are truncated too.

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


В списке pgsql-hackers по дате отправления:

Предыдущее
От: KaiGai Kohei
Дата:
Сообщение: [RFC] A tackle to the leaky VIEWs for RLS
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: [RFC] A tackle to the leaky VIEWs for RLS