0027703: BinTools_ShapeSet stream read bug
authormsv <msv@opencascade.com>
Fri, 22 Jul 2016 09:07:24 +0000 (12:07 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 28 Jul 2016 12:00:24 +0000 (15:00 +0300)
Avoid out of array bounds read/write.

src/BinTools/BinTools_ShapeSet.cxx

index 5008ddf..5ab0c6b 100644 (file)
@@ -395,8 +395,11 @@ void  BinTools_ShapeSet::Read(Standard_IStream& IS)
     IS.getline(vers,100,'\n');
     // BUC60769 PTV 18.10.2000: remove possible '\r' at the end of the line
     
-    for (Standard_Size lv = (strlen(vers)- 1); lv > 1 && (vers[lv] == '\r' || vers[lv] == '\n') ;lv--) 
-      vers[lv] = '\0';
+    Standard_Size lv = strlen(vers);
+    if (lv > 0) {
+      for (lv--; lv > 0 && (vers[lv] == '\r' || vers[lv] == '\n'); lv--)
+        vers[lv] = '\0';
+    }
     
   } while ( ! IS.fail() && strcmp(vers,Version_1) && strcmp(vers,Version_2) &&
           strcmp(vers,Version_3));