Change the behavior of setenv(), putenv() and unsetenv() to continue parsing

instead of returning an error if a corrupt (not a "name=value" string) entry
in the environ array is detected when (re)-building the internal
environment.  This should prevent applications or libraries from
experiencing issues arising from the expectation that these calls will
complete even with corrupt entries.  The behavior is now as it was prior to
7.0.

Reviewed by:	jilles
MFC after:	1 week
This commit is contained in:
Sean Farley 2009-12-06 23:27:24 +00:00
parent 6da7f71cd4
commit ca7520fe57
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=200191

View file

@ -361,8 +361,7 @@ __build_env(void)
} else {
__env_warnx(CorruptEnvValueMsg, envVars[envNdx].name,
strlen(envVars[envNdx].name));
errno = EFAULT;
goto Failure;
continue;
}
/*
@ -377,8 +376,7 @@ __build_env(void)
false) == NULL) {
__env_warnx(CorruptEnvFindMsg, envVars[envNdx].name,
nameLen);
errno = EFAULT;
goto Failure;
continue;
}
envVars[activeNdx].active = true;
}
@ -560,8 +558,7 @@ __merge_environ(void)
if ((equals = strchr(*env, '=')) == NULL) {
__env_warnx(CorruptEnvValueMsg, *env,
strlen(*env));
errno = EFAULT;
return (-1);
continue;
}
if (__setenv(*env, equals - *env, equals + 1,
1) == -1)