[postgis-tickets] r17057 - Avoid unaligned memory access in BOX2D_out
Raul
raul at rmr.ninja
Thu Nov 22 08:15:35 PST 2018
Author: algunenano
Date: 2018-11-22 08:15:35 -0800 (Thu, 22 Nov 2018)
New Revision: 17057
Modified:
branches/2.4/NEWS
branches/2.4/postgis/lwgeom_box.c
Log:
Avoid unaligned memory access in BOX2D_out
References #4244
Modified: branches/2.4/NEWS
===================================================================
--- branches/2.4/NEWS 2018-11-22 16:14:23 UTC (rev 17056)
+++ branches/2.4/NEWS 2018-11-22 16:15:35 UTC (rev 17057)
@@ -21,6 +21,7 @@
- #4247, Avoid undefined behaviour in next_float functions (Raúl Marín)
- #4249, Fix undefined behaviour in raster intersection (Raúl Marín)
- #4246, Fix undefined behaviour in ST_3DDistance (Raúl Marín)
+ - #4244, Avoid unaligned memory access in BOX2D_out (Raúl Marín)
PostGIS 2.4.5
Modified: branches/2.4/postgis/lwgeom_box.c
===================================================================
--- branches/2.4/postgis/lwgeom_box.c 2018-11-22 16:14:23 UTC (rev 17056)
+++ branches/2.4/postgis/lwgeom_box.c 2018-11-22 16:15:35 UTC (rev 17057)
@@ -95,14 +95,22 @@
PG_FUNCTION_INFO_V1(BOX2D_out);
Datum BOX2D_out(PG_FUNCTION_ARGS)
{
- GBOX *box = (GBOX *) PG_GETARG_POINTER(0);
char tmp[500]; /* big enough */
char *result;
int size;
- size = sprintf(tmp,"BOX(%.15g %.15g,%.15g %.15g)",
- box->xmin, box->ymin, box->xmax, box->ymax);
+ GBOX *box = (GBOX *)PG_GETARG_POINTER(0);
+ /* Avoid unaligned access to the gbox struct */
+ GBOX box_aligned;
+ memcpy(&box_aligned, box, sizeof(GBOX));
+ size = sprintf(tmp,
+ "BOX(%.15g %.15g,%.15g %.15g)",
+ box_aligned.xmin,
+ box_aligned.ymin,
+ box_aligned.xmax,
+ box_aligned.ymax);
+
result= palloc(size+1); /* +1= null term */
memcpy(result,tmp,size+1);
result[size] = '\0';
More information about the postgis-tickets
mailing list