Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.2:Update
openscad
openscad-fix-stl-import.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File openscad-fix-stl-import.patch of Package openscad
commit 07ea60f82e94a155f4926f17fad8e8366bc74874 Author: Torsten Paul <Torsten.Paul@gmx.de> Date: Wed Jan 13 21:15:01 2021 +0100 References: bsc#1185975 Upstream: merged Subject: Fix for STL import, CVE-2020-28600 Fix STL import, don't try to import partial files. Index: openscad-2019.05/src/import_stl.cc =================================================================== --- openscad-2019.05.orig/src/import_stl.cc +++ openscad-2019.05/src/import_stl.cc @@ -88,12 +88,17 @@ PolySet *import_stl(const std::string &f f.read(data, 5); if (!binary && !f.eof() && f.good() && !memcmp(data, "solid", 5)) { int i = 0; + int lineno = 1; double vdata[3][3]; std::string line; std::getline(f, line); while (!f.eof()) { + lineno++; std::getline(f, line); boost::trim(line); + if (line.length() == 0) { + continue; + } if (boost::regex_search(line, ex_sfe)) { continue; } @@ -101,23 +106,27 @@ PolySet *import_stl(const std::string &f i = 0; continue; } + if (i >= 3) { + PRINTB("ERROR: STL line %s, extra vertex line '%s' importing file '%s'",lineno % line % filename); + delete p; + return new PolySet(3); + } boost::smatch results; if (boost::regex_search(line, results, ex_vertices)) { try { - for (int v=0;v<3;v++) { - vdata[i][v] = boost::lexical_cast<double>(results[v+1]); + for (int v = 0; v < 3; ++v) { + vdata[i][v] = boost::lexical_cast<double>(results[v + 1]); } - } - catch (const boost::bad_lexical_cast &blc) { + if (++i == 3) { + p->append_poly(); + p->append_vertex(vdata[0][0], vdata[0][1], vdata[0][2]); + p->append_vertex(vdata[1][0], vdata[1][1], vdata[1][2]); + p->append_vertex(vdata[2][0], vdata[2][1], vdata[2][2]); + } + } catch (const boost::bad_lexical_cast& blc) { PRINTB("WARNING: Can't parse vertex line '%s', import() at line %d", line % loc.firstLine()); - i = 10; - continue; - } - if (++i == 3) { - p->append_poly(); - p->append_vertex(vdata[0][0], vdata[0][1], vdata[0][2]); - p->append_vertex(vdata[1][0], vdata[1][1], vdata[1][2]); - p->append_vertex(vdata[2][0], vdata[2][1], vdata[2][2]); + delete p; + return new PolySet(3); } } } Index: openscad-2019.05/testdata/scad/stl/stl-import-invalidvertex.scad =================================================================== --- /dev/null +++ openscad-2019.05/testdata/scad/stl/stl-import-invalidvertex.scad @@ -0,0 +1 @@ +import("../../stl/invalidvertex.stl"); Index: openscad-2019.05/testdata/scad/stl/stl-import-toomanyvertices.scad =================================================================== --- /dev/null +++ openscad-2019.05/testdata/scad/stl/stl-import-toomanyvertices.scad @@ -0,0 +1 @@ +import("../../stl/toomanyvertices.stl"); Index: openscad-2019.05/testdata/scad/stl/stl-import-unparseable.scad =================================================================== --- /dev/null +++ openscad-2019.05/testdata/scad/stl/stl-import-unparseable.scad @@ -0,0 +1 @@ +import("../../stl/unparsable.stl"); Index: openscad-2019.05/testdata/stl/invalidvertex.stl =================================================================== --- /dev/null +++ openscad-2019.05/testdata/stl/invalidvertex.stl @@ -0,0 +1,100 @@ +solid OpenSCAD_Model + facet normal -0 0 1 + outer loop + vertex 0 10 10 + vertex 10 0 10 + vertex 10 10 10 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10 0 10 + vertex 0 10 10 + vertex 0 0 10 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0 0 0 + vertex 10 10 0 + vertex 10 0 0 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 10 10 0 + vertex 0 0 0 + vertex 0 10 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0 0 0 + vertex 10 0 10 + vertex 0 0 10 + endloop + endfacet + facet normal 0 -1 -0 + outer loop + vertex 10 0 10 + vertex 0 0 0 + vertex 10 0 0 + endloop + endfacet + facet normal 1 -0 0 + outer loop + vertex 10 0 10 + vertex 10 10 0 + vertex 10 10 10 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 10 10 0 + vertex 10 0 10 + vertex 10 0 0 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 10 10 0 + vertex 0 10 10 + vertex 10 10 10 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0 10 10 + vertex 10 10 0 + vertex 0 10 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex 0 0 0 + vertex 0 10 10 + vertex 0 10 0 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0 10 10 + vertex 0 0 0 + vertex 0 0 10 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0 10 10 + vertex 0 0 blah + vertex 0 0 10 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0 10 10 + vertex 0 0 0 + vertex 0 0 10 + endloop + endfacet +endsolid OpenSCAD_Model Index: openscad-2019.05/testdata/stl/toomanyvertices.stl =================================================================== --- /dev/null +++ openscad-2019.05/testdata/stl/toomanyvertices.stl @@ -0,0 +1,94 @@ +solid OpenSCAD_Model + facet normal -0 0 1 + outer loop + vertex 0 10 10 + vertex 10 0 10 + vertex 10 10 10 + endloop + endfacet + facet normal 0 0 1 + outer loop + vertex 10 0 10 + vertex 0 10 10 + vertex 0 0 10 + endloop + endfacet + facet normal 0 0 -1 + outer loop + vertex 0 0 0 + vertex 10 10 0 + vertex 10 0 0 + endloop + endfacet + facet normal -0 0 -1 + outer loop + vertex 10 10 0 + vertex 0 0 0 + vertex 0 10 0 + endloop + endfacet + facet normal 0 -1 0 + outer loop + vertex 0 0 0 + vertex 10 0 10 + vertex 0 0 10 + endloop + endfacet + facet normal 0 -1 -0 + outer loop + vertex 10 0 10 + vertex 0 0 0 + vertex 10 0 0 + endloop + endfacet + facet normal 1 -0 0 + outer loop + vertex 10 0 10 + vertex 10 10 0 + vertex 10 10 10 + endloop + endfacet + facet normal 1 0 0 + outer loop + vertex 10 10 0 + vertex 10 0 10 + vertex 10 0 0 + endloop + endfacet + facet normal 0 1 -0 + outer loop + vertex 10 10 0 + vertex 0 10 10 + vertex 10 10 10 + endloop + endfacet + facet normal 0 1 0 + outer loop + vertex 0 10 10 + vertex 10 10 0 + vertex 0 10 0 + endloop + endfacet + facet normal -1 0 0 + outer loop + vertex 0 0 0 + vertex 0 10 10 + vertex 0 10 0 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0 10 10 + vertex 0 0 0 + vertex 0 0 10 + endloop + endfacet + facet normal -1 -0 0 + outer loop + vertex 0 10 10 + vertex 0 0 0 + vertex 0 0 10 + vertex 0 0 10 + endloop + endfacet +endsolid OpenSCAD_Model Index: openscad-2019.05/testdata/stl/unparseable.stl =================================================================== --- /dev/null +++ openscad-2019.05/testdata/stl/unparseable.stl @@ -0,0 +1,9 @@ +solid STL generated by MeshLab + facet normal 0.000000e+00 1.000000e+00 0.000000e+00 + outer loop + vertex 2.000000e+0 2.000000e+01 2.000000e+01 + vertex 2.000000e+01 2.000000e+01 0.000000e+00 + vertex 0.000000e+00 2.000000e+01 0.000000e+00 + endloop foo + endfacet bar +endsolid some blah blah
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor