From 15b944bf9ccaf200a83420f4e3e6de7a89af164d Mon Sep 17 00:00:00 2001 From: Olivier Courtin Date: Sat, 6 Feb 2010 10:49:22 +0000 Subject: [PATCH] Fix non NULL terminated string in ST_AsSVG with GEOMETRYCOLLECTION EMPTY, cf #409 reported by sdikiy. Add related unit test git-svn-id: http://svn.osgeo.org/postgis/trunk@5211 b70326c6-7e19-0410-871a-916f4a2858ee --- postgis/lwgeom_svg.c | 5 +++++ regress/svg.sql | 4 ++++ regress/svg_expected | 1 + 3 files changed, 10 insertions(+) diff --git a/postgis/lwgeom_svg.c b/postgis/lwgeom_svg.c index c76c3efd5..19844e151 100644 --- a/postgis/lwgeom_svg.c +++ b/postgis/lwgeom_svg.c @@ -472,6 +472,8 @@ assvg_collection_size(LWGEOM_INSPECTED *insp, bool relative, int precision) if ( i ) /* We have some geometries, so add space for delimiters. */ size += sizeof(";") * --i; + if (size == 0) size++; /* EMPTY GEOMETRYCOLLECTION */ + return size; } @@ -483,6 +485,9 @@ assvg_collection_buf(LWGEOM_INSPECTED *insp, char *output, bool relative, int pr LWGEOM_INSPECTED *subinsp; uchar *subgeom; + /* EMPTY GEOMETRYCOLLECTION */ + if (insp->ngeometries == 0) *ptr = '\0'; + for (i=0; ingeometries; i++) { if (i) ptr += sprintf(ptr, ";"); diff --git a/regress/svg.sql b/regress/svg.sql index 7e8a691f0..42bc76a1e 100755 --- a/regress/svg.sql +++ b/regress/svg.sql @@ -147,6 +147,10 @@ SELECT '3D_02', ST_AsSVG(GeomFromEWKT('SRID=4326;POINT(1 1 1)'), 0); SELECT '3D_03', ST_AsSVG(GeomFromEWKT('SRID=4326;LINESTRING(1 1 1, 2 2 2, 3 3 3, 4 4 4)'), 0); SELECT '3D_04', ST_AsSVG(GeomFromEWKT('SRID=4326;POLYGON((1 1 1, 2 2 2, 3 3 3, 4 4 4, 5 5 5, 5 0 0, 1 1 1))'), 0); + +-- EMPTY GEOMETRYCOLLECTION #409 +SELECT '#409', ST_AsSVG(GeomFromEWKT('GEOMETRYCOLLECTION EMPTY')); + -- -- Delete inserted spatial data -- diff --git a/regress/svg_expected b/regress/svg_expected index d3f008403..7bf12d4ed 100644 --- a/regress/svg_expected +++ b/regress/svg_expected @@ -41,3 +41,4 @@ ERROR: ST_AsSVG: 'MultiSurface' geometry type not supported. 3D_02|cx="1" cy="-1" 3D_03|M 1 -1 L 2 -2 3 -3 4 -4 3D_04|M 1 -1 L 2 -2 3 -3 4 -4 5 -5 5 0 Z +#409| -- 2.50.1