From 651a6af7e60668c41938c27f92acf1e7496445b6 Mon Sep 17 00:00:00 2001 From: dkulikov Date: Thu, 22 Jun 2023 16:54:21 +0100 Subject: [PATCH] 0033414: Modeling Algorithms - Access violation during executing BRepAlgoAPI_Section::Build() Crush occurred due to the fields IntTools_SurfaceRangeLocalizeData::myUParams, IntTools_SurfaceRangeLocalizeData::myVParams and IntTools_SurfaceRangeLocalizeData::myGridPoints not being checked for NULL in some cases. Missing checks are added. --- src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx | 6 +++--- tests/bugs/modalg_8/bug33414 | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 tests/bugs/modalg_8/bug33414 diff --git a/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx b/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx index 77f6ef697a..82dc49b72f 100644 --- a/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx +++ b/src/IntTools/IntTools_SurfaceRangeLocalizeData.cxx @@ -226,7 +226,7 @@ const gp_Pnt &IntTools_SurfaceRangeLocalizeData::GetPointInFrame Standard_Integer aFrmUInd = theUIndex + myUIndMin - 1; Standard_Integer aFrmVInd = theVIndex + myVIndMin - 1; - if (aFrmUInd > myUIndMax || aFrmVInd > myVIndMax) + if (myGridPoints.IsNull() || aFrmUInd > myUIndMax || aFrmVInd > myVIndMax) return gp::Origin(); return myGridPoints->Value(aFrmUInd, aFrmVInd); @@ -237,7 +237,7 @@ Standard_Real IntTools_SurfaceRangeLocalizeData::GetUParamInFrame { Standard_Integer aFrmInd = theIndex + myUIndMin - 1; - if (aFrmInd > myUIndMax) + if (myUParams.IsNull() || aFrmInd > myUIndMax) return Precision::Infinite(); return myUParams->Value(aFrmInd); @@ -248,7 +248,7 @@ Standard_Real IntTools_SurfaceRangeLocalizeData::GetVParamInFrame { Standard_Integer aFrmInd = theIndex + myVIndMin - 1; - if (aFrmInd > myVIndMax) + if (myVParams.IsNull() || aFrmInd > myVIndMax) return Precision::Infinite(); return myVParams->Value(aFrmInd); diff --git a/tests/bugs/modalg_8/bug33414 b/tests/bugs/modalg_8/bug33414 new file mode 100644 index 0000000000..89db2191fd --- /dev/null +++ b/tests/bugs/modalg_8/bug33414 @@ -0,0 +1,10 @@ +puts "========================" +puts "0033414: Modeling Algorithms - Access violation during executing BRepAlgoAPI_Section::Build()" +puts "========================" + +set filepath1 [locate_data_file "CR33414_1.brep"] +set filepath2 [locate_data_file "CR33414_2.brep"] +restore ${filepath1} shape1 +restore ${filepath2} shape2 +bsection res shape1 shape2 +# If bsection didn't cause a crash - everything is OK. \ No newline at end of file