diff options
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/stdlib/getenv.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/libc/stdlib/getenv.c b/lib/libc/stdlib/getenv.c index 4617f4551d9e..b7826d72a5d4 100644 --- a/lib/libc/stdlib/getenv.c +++ b/lib/libc/stdlib/getenv.c @@ -361,7 +361,8 @@ __build_env(void)  		} else {  			__env_warnx(CorruptEnvValueMsg, envVars[envNdx].name,  			    strlen(envVars[envNdx].name)); -			continue; +			errno = EFAULT; +			goto Failure;  		}  		/* @@ -376,7 +377,8 @@ __build_env(void)  		    false) == NULL) {  			__env_warnx(CorruptEnvFindMsg, envVars[envNdx].name,  			    nameLen); -			continue; +			errno = EFAULT; +			goto Failure;  		}  		envVars[activeNdx].active = true;  	} @@ -558,7 +560,8 @@ __merge_environ(void)  				if ((equals = strchr(*env, '=')) == NULL) {  					__env_warnx(CorruptEnvValueMsg, *env,  					    strlen(*env)); -					continue; +					errno = EFAULT; +					return (-1);  				}  				if (__setenv(*env, equals - *env, equals + 1,  				    1) == -1)  | 
