...
The restrictions on reading and writing a sequence controlled by an object of class
basic_filebuf<charT, traits>are the same as for reading and writing with the Standard C libraryFILEs.
The C Standard, subclause 7.19.5.3, paragraph 6 [ISO/IEC 9899:1999], places the following restrictions on FILE objects opened for both reading and writing:
...
Alternately inputting and outputting from a stream without an intervening flush or positioning call is undefined behavior.
Rule | Severity | Likelihood |
|---|
Detectable | Repairable | Priority | Level |
|---|---|---|---|
FIO50-CPP | Low | Likely |
Yes | No | P6 | L2 |
Automated Detection
Tool | Version | Checker | Description |
|---|
| Axivion Bauhaus Suite |
| CertC++-FIO50 | |||||||
| CodeSonar |
| IO.IOWOP IO.OIWOP | Input After Output Without Positioning Output After Input Without Positioning | ||||||
| Helix QAC |
| DF4711, DF4712, DF4713 | |||||||
| CERT_CPP-FIO50-a | Do not alternately input and output from a stream without an intervening flush or positioning call | |||||||
| Polyspace Bug Finder |
| CERT C++: FIO50-CPP | Checks for alternating input and output from a stream without flush or positioning call (rule fully covered) | ||||||
| Security Reviewer - Static Reviewer | 6.02 | C17 | Fully implemented |
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...
This rule supplements FIO39-C. Do not alternately input and output from a stream without an intervening flush or positioning call.
...
Bibliography
| [ISO/IEC 9899:1999] | Subclause 7.19.5.3, "The fopen Function" |
| [ISO/IEC 14882-2014] | Clause 27, "Input/Output Library" |
...
...