Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Rich Ercolani <rincebrain@gmail.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #15508
return ((a < b) ? a : b);
}
-/*
- * For discussion on the portability of the various methods, see
- * https://lists.freebsd.org/pipermail/freebsd-stable/2008-June/043136.html
- */
-static int
-spt_clearenv(void)
-{
- char **tmp;
-
- tmp = malloc(sizeof (*tmp));
- if (tmp == NULL)
- return (errno);
-
- tmp[0] = NULL;
- environ = tmp;
-
- return (0);
-}
-
static int
spt_copyenv(int envc, char *envp[])
{
return (errno);
memcpy(envcopy, envp, envsize);
- error = spt_clearenv();
- if (error) {
- environ = envp;
- free(envcopy);
- return (error);
- }
+ environ = NULL;
for (i = 0; envcopy[i]; i++) {
eq = strchr(envcopy[i], '=');
*eq = '=';
if (error) {
+ clearenv();
environ = envp;
free(envcopy);
return (error);