star-cad

Geometric operators for computer-aided design
git clone git://git.meso-star.fr/star-cad.git
Log | Files | Refs | README | LICENSE

commit 9e88050cf99ec5531542f7f3f8bcf85109434d09
parent ae5545ae8f53cf7d79cf48fda1cc0bcd975762d0
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri,  9 Sep 2022 10:37:56 +0200

Fix possible double free in some error paths

Diffstat:
Msrc/scad_geometry.c | 15+++++++++++++++
1 file changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/scad_geometry.c b/src/scad_geometry.c @@ -196,6 +196,7 @@ scad_geometries_partition_core ERR(scad_geometry_create(name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; + tagout = NULL; /* Prevent possible double free */ ERR(device_register_tags(geom)); @@ -645,6 +646,8 @@ scad_fuse_geometries ERR(scad_geometry_create(name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; + tagout = NULL; /* Prevent possible double free */ + ERR(device_register_tags(geom)); exit: @@ -707,6 +710,8 @@ scad_cut_geometries ERR(scad_geometry_create(name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; + tagout = NULL; /* Prevent possible double free */ + ERR(device_register_tags(geom)); exit: @@ -769,6 +774,8 @@ scad_intersect_geometries ERR(scad_geometry_create(name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; + tagout = NULL; /* Prevent possible double free */ + ERR(device_register_tags(geom)); exit: @@ -838,6 +845,8 @@ scad_geometries_common_boundaries ERR(scad_geometry_create(name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; + tagout = NULL; /* Prevent possible double free */ + ERR(device_register_tags(geom)); exit: @@ -946,6 +955,8 @@ scad_geometry_extrude } extrude_geom->gmsh_dimTags_n = extrude_sz; extrude_geom->gmsh_dimTags = extrude_data; + tagout = NULL; /* Prevent possible double free */ + ERR(device_register_tags(extrude_geom)); exit: @@ -992,6 +1003,8 @@ scad_geometry_copy ERR(scad_geometry_create(name, &copy)); copy->gmsh_dimTags_n = tagoutn; copy->gmsh_dimTags = tagout; + tagout = NULL; /* Prevent possible double free */ + ERR(device_register_tags(copy)); exit: @@ -1126,6 +1139,8 @@ scad_geometry_boundary ERR(scad_geometry_create(name, &geom)); geom->gmsh_dimTags_n = tagoutn; geom->gmsh_dimTags = tagout; + tagout = NULL; /* Prevent possible double free */ + ERR(device_register_tags(geom)); exit: