[postgis-tickets] r17016 - Allocate enough memory in gidx_to_string

Raul raul at rmr.ninja
Thu Nov 15 01:05:32 PST 2018


Author: algunenano
Date: 2018-11-15 01:05:32 -0800 (Thu, 15 Nov 2018)
New Revision: 17016

Modified:
   branches/2.3/NEWS
   branches/2.3/libpgcommon/gserialized_gist.c
Log:
Allocate enough memory in gidx_to_string

References #4236



Modified: branches/2.3/NEWS
===================================================================
--- branches/2.3/NEWS	2018-11-15 09:04:17 UTC (rev 17015)
+++ branches/2.3/NEWS	2018-11-15 09:05:32 UTC (rev 17016)
@@ -15,6 +15,7 @@
   - #4206, Fix support for PostgreSQL 12 dev branch (Laurenz Albe)
   - #3457, Fix raster envelope shortcut in ST_Clip (Sai-bot)
   - #4223, Fix parallel/near rectangle case in geography (Paul Ramsey)
+  - #4326, Allocate enough memory in gidx_to_string (Raúl Marín)
 
 PostGIS 2.3.7
 2018/04/06

Modified: branches/2.3/libpgcommon/gserialized_gist.c
===================================================================
--- branches/2.3/libpgcommon/gserialized_gist.c	2018-11-15 09:04:17 UTC (rev 17015)
+++ branches/2.3/libpgcommon/gserialized_gist.c	2018-11-15 09:05:32 UTC (rev 17016)
@@ -39,8 +39,13 @@
 
 	if ( a == NULL )
 		return pstrdup("<NULLPTR>");
-
-	str = (char*)palloc(128); /* 15*2*4+8==128 */
+	/* 4 (GIDX_MAX_DIM) *
+	 * 2 (MAX & MIN) *
+	 * 20 (Max representation (e.g. -3.40282346639e+38) [19] + space)
+	 * = 4*2*20 = 160
+	 * + 9 [ 'GIDX(' = 5, ','  = 1, ' )' = 2 + '\0' = 1]
+	 */
+	str = (char *)palloc(169);
 	rv = str;
 	ndims = GIDX_NDIMS(a);
 



More information about the postgis-tickets mailing list