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:
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->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: