Main Content

MISRA C:2023 Rule 22.3

The same file shall not be open for read and write access at the same time on different streams

Since R2024a

Description

Rule Definition

The same file shall not be open for read and write access at the same time on different streams.

Rationale

If a file is both written and read via different streams, the behavior can be undefined.

Polyspace Implementation

You can check for this rule with a Bug Finder analysis only.

Troubleshooting

If you expect a rule violation but do not see it, refer to Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

#include <stdio.h>

void func(void) {
    FILE *fw = fopen("tmp.txt", "r+");
    FILE *fr = fopen("tmp.txt", "r");   /* Non-compliant: File open in stream fw*/
}

In this example, the rule is violated when the same file tmp.txt is opened in two streams. The FILE pointers fw and fr point to two different streams here.

Check Information

Group: Resources
Category: Required
AGC Category: Required

Version History

Introduced in R2024a