Versions Compared

Key

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

...

Code Block
bgColor#FFcccc
void f1 (size_t nchars) {
char *p = (char *)malloc(nchars);
const size_t n = nchars + 1;

memset(p, 0, n);

/* ...More program code */

}

Compliant

...

Solution

...

This compliant solution makes sure that the value of 'n' is not greater the size of the dynamic memory pointed to by the pointer 'p':

Code Block
bgColor#ccccff
void f1 (size_t nchars, size_t val) {

char *p = (char *)malloc(nchars);
const size_t n = val;

if (nchars - n < 0) {

     /* Handle Error */

}

else {

memset(p, 0, n);

}

/* ... More program code */


}

Risk

...

Assessment

...

Depending on the library function called, the attacker may be able to use a heap overflow vulnerability to run arbitrary code. The detection of checks specified in description can be automated but the remediation has to be manual.

...