Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Providing an expression that appears to produce side effects may be misleading to programmers who are not aware that these expressions are not evaluated. As a result, programmers may make invalid assumptions about program state leading to errors and possible software vulnerabilities.

Non-Compliant Code Example

In this example, the variable a will still have a value 14 after b has been initialized.

Code Block

int main(void) {
  int a = 14;
  int b = sizeof(a++);
  ...
  return 0;
}

The expression a++ is not evaluated. Consequently, side effects in the expression are not executed.

Implementation Specific Details

This example compiles cleanly under Microsoft Visual Studio 2005 Version 8.0, with the /W4 option.

Compliant Solution

In this compliant solution, the variable a is incremented.

Code Block

int main(void) {
  int a = 14;
  int b = sizeof(a);
  a++;
  ...
  return 0;
}

Implementation Specific Details

...

Include Page
c:EXP06 NCCE
c:EXP06 NCCE
Include Page
c:EXP06 CS
c:EXP06 CS

Priority: P3 Level: L3

Operands to the sizeof operator which contain side effects are unlikely to result in software vulnerabilties, but can also be easily remediated.

...