mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Tighten up overflow check in path_recv, pursuant to code review inspired
by Ken Ashcraft's report. I think there is no actual bug here since if the int32 value does wrap a little bit, palloc will still reject it. Still it's better that the code be obviously correct.
This commit is contained in:
parent
0a54441cbf
commit
4d924bdb46
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/adt/geo_ops.c,v 1.83 2003/11/29 19:51:58 pgsql Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/adt/geo_ops.c,v 1.84 2004/05/12 22:38:44 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1383,7 +1383,7 @@ path_recv(PG_FUNCTION_ARGS)
|
|||||||
|
|
||||||
closed = pq_getmsgbyte(buf);
|
closed = pq_getmsgbyte(buf);
|
||||||
npts = pq_getmsgint(buf, sizeof(int32));
|
npts = pq_getmsgint(buf, sizeof(int32));
|
||||||
if (npts < 0 || npts >= (int32) (INT_MAX / sizeof(Point)))
|
if (npts < 0 || npts >= (int32) ((INT_MAX - offsetof(PATH, p[0])) / sizeof(Point)))
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
|
(errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
|
||||||
errmsg("invalid number of points in external \"path\" value")));
|
errmsg("invalid number of points in external \"path\" value")));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user