From: Paul Ramsey <pramsey@cleverelephant.ca>
Date: Fri, 22 Sep 2017 19:55:39 +0000 (+0000)
Subject: Fix crash on larger geometries, caused by direct freeing
X-Git-Tag: 2.4.0rc2~12
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ae6f1d6287c1c901b777f6b61465f825149f83d3;p=postgis

Fix crash on larger geometries, caused by direct freeing
of bytebuffer internals


git-svn-id: http://svn.osgeo.org/postgis/trunk@15798 b70326c6-7e19-0410-871a-916f4a2858ee
---

diff --git a/liblwgeom/bytebuffer.c b/liblwgeom/bytebuffer.c
index 913cc96cf..e5e6e017a 100644
--- a/liblwgeom/bytebuffer.c
+++ b/liblwgeom/bytebuffer.c
@@ -104,7 +104,10 @@ void
 bytebuffer_destroy_buffer(bytebuffer_t *s)
 {
 	if ( s->buf_start != s->buf_static )
+	{
 		lwfree(s->buf_start);
+		s->buf_start = NULL;
+	}
 
 	return;
 }
diff --git a/liblwgeom/lwout_twkb.c b/liblwgeom/lwout_twkb.c
index 38ca94046..695df4dc0 100644
--- a/liblwgeom/lwout_twkb.c
+++ b/liblwgeom/lwout_twkb.c
@@ -211,7 +211,7 @@ static int ptarray_to_twkb_buf(const POINTARRAY *pa, TWKB_GLOBALS *globals, TWKB
 		bytebuffer_append_bytebuffer(ts->geom_buf, b_p);
 
 		/* Clear our temporary buffer */
-		lwfree(b.buf_start);
+		bytebuffer_destroy_buffer(&b);
 	}
 	else
 	{