Re: Invalid memory alloc request size for repeat()

Поиск
Список
Период
Сортировка
Искать
От
Japin Li
Тема
Re: Invalid memory alloc request size for repeat()
Дата
в 01:03:54
Msg-id
MEYP282MB16697F171101020C5A26306DB6D99@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM
Ответ на
Список
Дерево обсуждения
Invalid memory alloc request size for repeat() Japin Li <japinli@hotmail.com>
Re: Invalid memory alloc request size for repeat() Tom Lane <tgl@sss.pgh.pa.us>
Re: Invalid memory alloc request size for repeat() Japin Li <japinli@hotmail.com>
Re: Invalid memory alloc request size for repeat() Japin Li <japinli@hotmail.com>
Re: Invalid memory alloc request size for repeat() Tom Lane <tgl@sss.pgh.pa.us>
Re: Invalid memory alloc request size for repeat() "David G. Johnston" <david.g.johnston@gmail.com>
Re: Invalid memory alloc request size for repeat() Japin Li <japinli@hotmail.com>

On Wed, 25 May 2022 at 22:50, Tom Lane  wrote:
> Japin Li  writes:
>> Today, I try to use repeat() to generate 1GB text, and it occurs invalid memory
>> alloc request size [1].  It is a limit from palloc(), then I try to reduce it,
>> it still complains out of memory which comes from enlargeStringInfo() [2].  The
>> documentation about repect() [3] doesn't mentaion the limitation.
>
> It would probably make sense for repeat() to check this explicitly:
>
>     if (unlikely(pg_mul_s32_overflow(count, slen, &tlen)) ||
> -       unlikely(pg_add_s32_overflow(tlen, VARHDRSZ, &tlen)))
> +       unlikely(pg_add_s32_overflow(tlen, VARHDRSZ, &tlen)) ||
> +       unlikely(!AllocSizeIsValid(tlen)))
>         ereport(ERROR,
>                 (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
>                  errmsg("requested length too large")));
>

LGTM.  Thanks for your patch!


-- 
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.


В списке pgsql-hackers по дате отправления
От: Japin Li
Дата:
От: Michael Paquier
Дата:
FAQ