From ceb41bf2065a3622450b4ad847a098fb99045b2c Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 27 Apr 2022 14:19:21 +0200 Subject: [PATCH] Fix crash during binary I/O of Triangulation_3 --- Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt | 2 +- Triangulation_3/include/CGAL/Triangulation_3.h | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt index ad17a33d632..d7ed3ec6bb8 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/CMakeLists.txt @@ -50,7 +50,7 @@ set_package_properties( DESCRIPTION "A library for image processing." PURPOSE "Can be used for I/O (DICOM, VTU, VTP.") -polyhedron_demo_plugin(triangulation_3_io_plugin triangulation_3_io_plugin KEYWORDS IO) +polyhedron_demo_plugin(triangulation_3_io_plugin triangulation_3_io_plugin KEYWORDS Viewer) target_link_libraries(triangulation_3_io_plugin PUBLIC scene_triangulation_3_item) if(VTK_FOUND) diff --git a/Triangulation_3/include/CGAL/Triangulation_3.h b/Triangulation_3/include/CGAL/Triangulation_3.h index 07518932ccc..6368bf90d30 100644 --- a/Triangulation_3/include/CGAL/Triangulation_3.h +++ b/Triangulation_3/include/CGAL/Triangulation_3.h @@ -2388,9 +2388,13 @@ std::istream& operator>> (std::istream& is, Triangulation_3& tr) if(!is) return is; + std::vector< Vertex_handle > V; + if(d > 3 || d < -2 || (n+1) > V.max_size()) { + is.setstate(std::ios_base::failbit); + return is; + } tr._tds.set_dimension(d); - - std::vector< Vertex_handle > V(n+1); + V.resize(n+1); V[0] = tr.infinite_vertex(); // the infinite vertex is numbered 0 for(std::size_t i=1; i <= n; i++)