Versions Compared

Key

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

...

None-Compliant Code Example

This is a none-compliant code example showing that modification of the string value returned by the function getenv() will affect other processes that are using the same environmental variable at this given time.

Code Block
bgColor#FFcccc
int foo()
{
    char *env;
    env = getenv("TEST_ENV");
    env[0] = 'a';

    /*Do some more things*/

    return 0;
}



Compliant Code Solution

This is a compliant code solution. The code shows that if the programmer feel it is necessary to modify the value the string returned by the function getenv(), then the programmer should make a local copy of that string value, and then modify the local copy of that string.

Code Block
bgColor#ccccFF
int foo()
{
    char *env;
    char *copy_of_env;

    env = getenv("TEST_ENV");
    copy_of_env = malloc( (strlen(env)+1) * sizeof(char) );
    /* Error handling */
    strncpystrcpy(copy_of_env, env, strlen(env));

    copy_of_env[0] = 'a';

    /*Do some more things*/

    return 0;
}

...