Upon successful completion, getenv() function returns a pointer to a null-terminated string containing the value of a specified environmental variable. If the specified variable cannot be found the environment of the calling process, a null pointer is returned.
Do not modify the value returned by the getenv() function. Create a copy and make your changes locally, using setenv() to update environ when necessary. This allows the implementation to properly allocate and manage memory.
This non-compliant code example showing that modification of the string value returned by the function getenv().
int foo()
{
    char *env;
    env = getenv("TEST_ENV");
    env[0] = 'a';
    /*Do some more things*/
    return 0;
}
 | 
This is a compliant code solution. If 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.
int foo()
{
    char *env;
    char *copy_of_env;
    env = getenv("TEST_ENV");
    copy_of_env = malloc( strlen(env) + 1 );
    /* Error handling */
    strcpy(copy_of_env, env);
    copy_of_env[0] = 'a';
    /*Do some more things*/
    return 0;
}
 | 
 Rule   | 
 Severity    | 
 Likelihood    | 
Remediation Cost  | 
Priority  | 
Level  | 
|---|---|---|---|---|---|
 ENV30-C   | 
 2 (Medium)   | 
 3 (probable)      | 
 2 (Medium)   | 
P  | 
L  |