MantisBT - Open CASCADE
View Issue Details
0025602Open CASCADE[OCCT] OCCT:Data Exchangepublic2014-12-12 16:292020-11-20 15:03
nbv 
skl 
normalminor 
assignedopen 
 
[OCCT] 7.6.0* 
0025602: Data Exchange - It is important for IGES and STEP file format to add check, if wrong data are read from the file
It is important for IGES and STEP file format to add check, if wrong data are read from the file. For example, if file contains number ~ 1.0e-314 (less than DBL_MIN) or Nan-numbers (see wrongnum.PNG file attached).
test de step_1 E6

New test case is not required.
Just for the record:
Validity of numbers read can be checked by _fpclass(...) function. Its code is shown there: http://www.jbox.dk/sanos/source/lib/math.c.html [^] [^]

Function _fpclass(...) is standard for Visual Studio but it is not supported by Linux-translators. The author of notice (http://www.johndcook.com/blog/ieee_exceptions_in_cpp/ [^] [^]) advises to use fp_class_d(...) function on LINUX platform. But it is not supported, too.
No tags attached.
related to 0025275closed bugmaster Open CASCADE Different result of reading operation from *.igs and *.stp file for WINDOWS and LINUX platforms 
related to 0030875closed abv Community Foundation Classes - BSplCLib crashes in case of infinite upper knot 
png wrongnum.PNG (42,270) 2014-12-12 16:29
https://tracker.dev.opencascade.org/
Issue History
2014-12-12 16:29nbvNew Issue
2014-12-12 16:29nbvAssigned To => nbv
2014-12-12 16:29nbvFile Added: wrongnum.PNG
2014-12-12 16:32nbvAdditional Information Updatedbug_revision_view_page.php?rev_id=8867#r8867
2014-12-12 16:32nbvRelationship addedrelated to 0025275
2014-12-13 16:41msvSummaryIt is important for IGES and STEP file format to add check, if if wrong data are read from the file => It is important for IGES and STEP file format to add check, if wrong data are read from the file
2014-12-13 16:41msvDescription Updatedbug_revision_view_page.php?rev_id=8877#r8877
2014-12-30 15:42nbvStatusnew => assigned
2014-12-30 16:59gitNote Added: 0035905
2014-12-30 17:07nbvNote Added: 0035907
2014-12-30 17:07nbvAssigned Tonbv => msv
2014-12-30 17:07nbvStatusassigned => resolved
2015-01-01 15:34abvNote Added: 0035916
2015-01-01 15:34abvAssigned Tomsv => nbv
2015-01-01 15:34abvStatusresolved => assigned
2015-01-12 10:28nbvNote Added: 0035944
2015-01-12 10:29nbvAssigned Tonbv => abv
2015-01-12 10:29nbvStatusassigned => feedback
2015-01-12 10:59msvNote Added: 0035945
2015-01-12 11:26msvNote Added: 0035946
2015-01-12 11:41msvAssigned Toabv => nbv
2015-01-12 11:41msvStatusfeedback => assigned
2015-04-06 16:58abvTarget Version6.9.0 => 7.1.0
2015-06-01 09:27nbvRelationship addedrelated to 0025486
2015-07-29 14:27gitNote Added: 0043676
2015-07-29 16:13gitNote Added: 0043681
2016-10-26 20:00gkaTarget Version7.1.0 => 7.2.0
2017-07-27 09:33abvTarget Version7.2.0 => 7.4.0
2019-08-13 12:57kgvRelationship addedrelated to 0030875
2019-08-13 12:57kgvAssigned Tonbv => gka
2019-08-16 10:52kgvSummaryIt is important for IGES and STEP file format to add check, if wrong data are read from the file => Data Exchange - It is important for IGES and STEP file format to add check, if wrong data are read from the file
2019-09-12 23:09abvTarget Version7.4.0 => 7.5.0
2020-09-17 20:14gkaTarget Version7.5.0 => 7.6.0*
2020-11-20 15:03szyAssigned Togka => skl

Notes
(0035905)
git   
2014-12-30 16:59   
Branch CR25602 has been created by nbv.

SHA-1: 1c202377655809dc8952ea3b3783664c08599a80


Detailed log of new commits:

Author: nbv
Date: Mon Dec 29 14:07:55 2014 +0300

    0025602: It is important for IGES and STEP file format to add check, if if wrong data are read from the file
    
    1. Functions Precision::IsIllegal(...) and Precision::IsInfinitesimal(...) were added.
    2. Detection incorrect numbers read from *.stp and/or *.igs files was added.
    3. Precision.cdl was deleted.
    4. New exception type "UnsupportedNumber" was created.
(0035907)
nbv   
2014-12-30 17:07   
Dear Mikhail!

Please review CR25602 branch.

Before reviewing please pay attention to the your message http://tracker.dev.opencascade.org/view.php?id=25275#c35288. [^]

Exception about illegal number is caught in Interface_FileReaderTool.cxx in the function Interface_FileReaderTool::LoadModel(const Handle(Interface_InterfaceModel)&).
There, for every error type special status is set (e.g. "XSTEP_21"). This status is decrypted in \src\XSMessage\XSTEP.* resource file. Entity with error will be ignored.
(0035916)
abv   
2015-01-01 15:34   
My remarks:

1. Please roll back changes that are not related to the fix, such as conversion of package Precision to non-CDL and reformatting StepData_StepReaderData.cxx. Besides, have you tried building this? I guess WOK should fail to compile Precise due to absence of CDL.

2. Please explain why not using standard fpclass() function but inventing your own instead.

3. Instead of checking result of Atof() and Interface_FileReaderData::Fastof() in 6 places, why not introducing relevant check in these functions?
(0035944)
nbv   
2015-01-12 10:28   
Dear Andrey!

1. Problems with compilation are absent, it has been checked.

2. Please read the message message http://tracker.dev.opencascade.org/view.php?id=25275#c35288. [^] "The lines 543-552 have wrong indentation...". There is no point in correcting indentation without code reformatting, is there?

3. See Additional information to the bug: "Function _fpclass(...) is standard for Visual Studio but it is not supported by Linux-translators..."

4. In my point of view, Atof() and Interface_FileReaderData::Fastof() functions must read (and convert) all values correctly (without any exceptions). E.g. why should we throw an exception in Atof() function, if it reads number 3e+101? We should not. Usually, it is a good value. It is bad for shapes dimension only.
(0035945)
msv   
2015-01-12 10:59   
I agree with abv's remarks.
My addition: please indent the definition of new exception UnsupportedNumber to be the same as of other inherited NumericError.
(0035946)
msv   
2015-01-12 11:26   
Concerning point 2, "There is no point in correcting indentation without code reformatting".
1. Please do not make any formatting modifications in the code that you are not modifying.
2. When you are modifying a code, please try to make as few changes as possible.
(0043676)
git   
2015-07-29 14:27   
Branch CR25602 has been updated forcibly by nbv.

SHA-1: 6eb75c4569698e789eff65a9cc9b3693c149a539
(0043681)
git   
2015-07-29 16:13   
Branch CR25602 has been updated forcibly by nbv.

SHA-1: a80b728177f59e6a2f64d5153087d89aaf694e0f