From: | David Zhang <david(dot)zhang(at)highgo(dot)ca> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | a potential size overflow issue |
Date: | 2020-09-25 23:39:02 |
Message-ID: | e9a687b6-99ab-c3b0-d764-31b76bb17ff9@highgo.ca |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi hackers,
"InitBufTable" is the function used to initialize the buffer lookup
table for buffer manager. With the memory size increasing nowadays,
there is a potential overflow issue for the parameter "int size" used by
"InitBufTable". This function is invoked in freelist.c as below:
InitBufTable(NBuffers + NUM_BUFFER_PARTITIONS);
The number of buffer block “NBuffers” is also defined as "int", and
"NUM_BUFFER_PARTITIONS" has a default value 128. In theory, it may get
the chance to overflow the "size" parameter in "InitBufTable". The
"size" parameter is later used by "ShmemInitHash" as "init_size" and
"max_size", which are all defined as "long".
SharedBufHash = ShmemInitHash("Shared Buffer Lookup Table",
size, size,
&info,
HASH_ELEM | HASH_BLOBS | HASH_PARTITION);
Therefore, it would be better to change "InitBufTable(int size)" to
"InitBufTable(long size)".
A simple patch is attached and it passed the “make installcheck-world” test.
--
David
Software Engineer
Highgo Software Inc. (Canada)
www.highgo.ca
Attachment | Content-Type | Size |
---|---|---|
fix-a-potential-overflow-issue-for-InitBufTable.patch | text/plain | 1.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Julien Rouhaud | 2020-09-26 00:09:31 | Re: Optimize memory allocation code |
Previous Message | Chapman Flack | 2020-09-25 22:24:48 | What does pg_stat_get_xact_function_self_time count exactly? |