mirror of
https://github.com/postgres/postgres.git
synced 2025-11-28 11:44:57 +03:00
postgres: Use pg_{add,mul}_size_overflow()
The backend implementations of add_size() and mul_size() can now make use of the APIs provided in common/int.h. Reviewed-by: Chao Li <li.evan.chao@gmail.com> Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/CAOYmi%2B%3D%2BpqUd2MUitvgW1pAJuXgG_TKCVc3_Ek7pe8z9nkf%2BAg%40mail.gmail.com
This commit is contained in:
@@ -65,6 +65,7 @@
|
||||
|
||||
#include "postgres.h"
|
||||
|
||||
#include "common/int.h"
|
||||
#include "fmgr.h"
|
||||
#include "funcapi.h"
|
||||
#include "miscadmin.h"
|
||||
@@ -495,9 +496,7 @@ add_size(Size s1, Size s2)
|
||||
{
|
||||
Size result;
|
||||
|
||||
result = s1 + s2;
|
||||
/* We are assuming Size is an unsigned type here... */
|
||||
if (result < s1 || result < s2)
|
||||
if (pg_add_size_overflow(s1, s2, &result))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
|
||||
errmsg("requested shared memory size overflows size_t")));
|
||||
@@ -512,11 +511,7 @@ mul_size(Size s1, Size s2)
|
||||
{
|
||||
Size result;
|
||||
|
||||
if (s1 == 0 || s2 == 0)
|
||||
return 0;
|
||||
result = s1 * s2;
|
||||
/* We are assuming Size is an unsigned type here... */
|
||||
if (result / s2 != s1)
|
||||
if (pg_mul_size_overflow(s1, s2, &result))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
|
||||
errmsg("requested shared memory size overflows size_t")));
|
||||
|
||||
Reference in New Issue
Block a user