Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Edited by sciSpider (sch jbop) (X_X)@==(Q_Q)@

...

The C99 printf() function is implemented as a variadic function. This non-compliant code example swaps its nullNULL-terminated byte string and integer parameters with respect to how they were specified in the format string. Consequently, the integer is interpreted as a pointer to a nullNULL-terminated byte string and dereferenced. This will likely cause the program to abnormally terminate. Note that the error_message pointer is likewise interpreted as an integer.

Code Block
bgColor#ffcccc
char const char *error_msg = "Error occurred";
/* ... */
printf("%s:%d", 15, error_msg);

...

This compliant solution is formatted so that the specifiers are consistent with their parameters.

Code Block
bgColor#ccccff
char const char *error_msg = "Error occurred";
/* ... */
printf("%d:%s", 15, error_msg);

...

Code Block
bgColor#ffcccc
long long a = 1;
char const char msg[] = "Default message";
/* ... */
printf("%d %s", a, msg);

...

Code Block
bgColor#ccccff
long long a = 1;
char const char msg[] = "Default message";
/* ... */
printf("%lld %s", a, msg);

...

Recommendation

Severity

Likelihood

Remediation Cost

Priority

Level

DCL11-A

2 ( medium ) 2 (

probable )

2 ( medium )

P8

L2

Related Vulnerabilities

...