]> OCCT Git - occt.git/commitdiff
0031585: Access Violation while creating fillet - ChiFi3d_Builder::PerformIntersectio...
authorChris Hennes <chennes@pioneerlibrarysystem.org>
Sun, 13 Feb 2022 00:52:19 +0000 (18:52 -0600)
committerkgv <kgv@opencascade.com>
Fri, 22 Apr 2022 08:20:39 +0000 (11:20 +0300)
There is one case in PerformIntersectionAtEnd that did not test whether
an array access exceeded the length of the array, in rare cases
resulting in a segmentation fault. That error-handling behavior is
replaced by the exception code used elsewhere in the function. For
consistency, the code is copied exactly as implemented elsewhere. This
code has the same effect as that proposed by the bug submitter.

src/ChFi3d/ChFi3d_Builder_C1.cxx

index 9d78c539444df3dc5e353e291025b7dbc8088cea..5fd460247011c1b0b10a1b890eb66b158ddd2886 100644 (file)
@@ -2036,6 +2036,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index)
       if ((possible1 && possible2) || (!possible1 && !possible2) || (nbarete > 4)) {
        while (!trouve) {
          nb++;
+         if (nb>=nn) throw Standard_Failure("IntersectionAtEnd : the max number of faces reached");
          if (nb!=1) F3=Face[nb-2];
          Face[nb-1]=F3;
          if (CV1.Arc().IsSame(edgelibre1))