Versions Compared

Key

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

...

In this example, the function funcinit_array() incorrectly returns a pointer to a local stack variable.

Code Block
bgColor#FFCCCC
char *funcinit_array() {
   char aarray[10] ;
   /* OperateInitialize onarray a */
   return &a[0]array;
}

Compiling with appropriate warning levels should generate a warning when a local stack variable is returned from a function.

...

Correcting this example depends on the intent of the programmer. If the intent is to modify the value of a array and have that modification persist outside of the scope of funcinit_array(), then the desired behavior can be achieved by declaring a array elsewhere and passing it as a parameter to funcinit_array().

Code Block
bgColor#ccccff
void funcinit_array(char aarray[]) {
   /* Operate on aarray */
   return;
}

Risk Assessment

...