[geos-devel] [GEOS] #1085: RelateOp crashes on input with empty components

GEOS geos-trac at osgeo.org
Thu Dec 10 06:31:40 PST 2020


#1085: RelateOp crashes on input with empty components
------------------------+--------------------------
 Reporter:  strk        |      Owner:  geos-devel@…
     Type:  defect      |     Status:  new
 Priority:  major       |  Milestone:  3.6.4
Component:  Default     |    Version:  3.6.3
 Severity:  Unassigned  |   Keywords:
------------------------+--------------------------
 From https://trac.osgeo.org/postgis/ticket/4814#comment:4
 we observe a crash in RelateOp when inputs contain empty components.

 Inputs:
 {{{
 LINESTRING(10 0,0 10)
 MULTILINESTRING((10 -10,-10 10), EMPTY)
 }}}

 Valgrind report:

 {{{
 ==21144== Invalid read of size 8
 ==21144==    at 0x19D4F4C2: operator== (Coordinate.inl:123)
 ==21144==    by 0x19D4F4C2:
 geos::algorithm::PointLocator::locate(geos::geom::Coordinate const&,
 geos::geom::LineString const*) (PointLocator.cpp:133)
 ==21144==    by 0x19D4F870:
 geos::algorithm::PointLocator::computeLocation(geos::geom::Coordinate
 const&, geos::geom::Geometry const*) (PointLocator.cpp:82)
 ==21144==    by 0x19D4FA88:
 geos::algorithm::PointLocator::locate(geos::geom::Coordinate const&,
 geos::geom::Geometry const*) (PointLocator.cpp:55)
 ==21144==    by 0x19DDF78F:
 geos::operation::relate::RelateComputer::labelIsolatedNode(geos::geomgraph::Node*,
 int) (RelateComputer.cpp:509)
 ==21144==    by 0x19DDF847:
 geos::operation::relate::RelateComputer::labelIsolatedNodes()
 (RelateComputer.cpp:499)
 ==21144==    by 0x19DDFDCD:
 geos::operation::relate::RelateComputer::computeIM()
 (RelateComputer.cpp:162)
 ==21144==    by 0x19DE0774:
 geos::operation::relate::RelateOp::relate(geos::geom::Geometry const*,
 geos::geom::Geometry const*) (RelateOp.cpp:42)
 ==21144==    by 0x19D59710: relate (Geometry.cpp:456)
 ==21144==    by 0x19D59710:
 geos::geom::Geometry::intersects(geos::geom::Geometry const*) const
 (Geometry.cpp:344)
 ==21144==    by 0x194090E0: GEOSIntersects_r (geos_ts_c.cpp:500)
 }}}

-- 
Ticket URL: <https://trac.osgeo.org/geos/ticket/1085>
GEOS <http://trac.osgeo.org/geos>
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).


More information about the geos-devel mailing list