[postgis-tickets] r17898 - Fix leak in lwcollection_from_wkb_state
Raul
raul at rmr.ninja
Thu Oct 10 04:43:26 PDT 2019
Author: algunenano
Date: 2019-10-10 04:43:26 -0700 (Thu, 10 Oct 2019)
New Revision: 17898
Modified:
branches/2.4/NEWS
branches/2.4/liblwgeom/cunit/cu_in_wkb.c
branches/2.4/liblwgeom/lwin_wkb.c
Log:
Fix leak in lwcollection_from_wkb_state
References #4536
Modified: branches/2.4/NEWS
===================================================================
--- branches/2.4/NEWS 2019-10-10 11:43:01 UTC (rev 17897)
+++ branches/2.4/NEWS 2019-10-10 11:43:26 UTC (rev 17898)
@@ -14,6 +14,7 @@
- #4518, Backport system views to make upgrade to PostGIS3 cleaner (Paul Ramsey)
- #4519, Fix getSRIDbySRS crash (Raúl Marín)
- #4534, Fix leak in lwcurvepoly_from_wkb_state (Raúl Marín)
+ - #4536, Fix leak in lwcollection_from_wkb_state (Raúl Marín)
PostGIS 2.4.8
Modified: branches/2.4/liblwgeom/cunit/cu_in_wkb.c
===================================================================
--- branches/2.4/liblwgeom/cunit/cu_in_wkb.c 2019-10-10 11:43:01 UTC (rev 17897)
+++ branches/2.4/liblwgeom/cunit/cu_in_wkb.c 2019-10-10 11:43:26 UTC (rev 17898)
@@ -231,6 +231,27 @@
000, 000, 000, 000, 010, 000, 000, 000, 000, 000, 000, 000, 000, 010, 000, 000, 000, 000};
LWGEOM *g = lwgeom_from_wkb(wkb, 36, LW_PARSER_CHECK_NONE);
lwgeom_free(g);
+
+ /* OSS-FUZZ https://trac.osgeo.org/postgis/ticket/4536 */
+ uint8_t wkb2[319] = {
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 012, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 051, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 000, 115, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 000, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 000, 000, 000, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 002,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 207, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 000, 000, 000, 000, 000,
+ 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 000, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001,
+ 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001, 001};
+ g = lwgeom_from_wkb(wkb2, 319, LW_PARSER_CHECK_NONE);
+ lwgeom_free(g);
}
/*
Modified: branches/2.4/liblwgeom/lwin_wkb.c
===================================================================
--- branches/2.4/liblwgeom/lwin_wkb.c 2019-10-10 11:43:01 UTC (rev 17897)
+++ branches/2.4/liblwgeom/lwin_wkb.c 2019-10-10 11:43:26 UTC (rev 17898)
@@ -655,6 +655,8 @@
geom = lwgeom_from_wkb_state(s);
if ( lwcollection_add_lwgeom(col, geom) == NULL )
{
+ lwgeom_free(geom);
+ lwgeom_free((LWGEOM *)col);
lwerror("Unable to add geometry (%p) to collection (%p)", geom, col);
return NULL;
}
More information about the postgis-tickets
mailing list