upstream: don't leak environment= variable when it is not the first
match OpenBSD-Commit-ID: 7fbdc3dfe0032deaf003fd937eeb4d434ee4efe0
This commit is contained in:
parent
db2130e234
commit
7d64a9fb58
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: auth-options.c,v 1.96 2021/07/23 03:57:20 djm Exp $ */
|
/* $OpenBSD: auth-options.c,v 1.97 2021/07/24 01:55:19 djm Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 Damien Miller <djm@mindrot.org>
|
* Copyright (c) 2018 Damien Miller <djm@mindrot.org>
|
||||||
*
|
*
|
||||||
|
@ -410,8 +410,10 @@ sshauthopt_parse(const char *opts, const char **errstrp)
|
||||||
errstr = "invalid environment string";
|
errstr = "invalid environment string";
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
if ((cp = strdup(opt)) == NULL)
|
if ((cp = strdup(opt)) == NULL) {
|
||||||
|
free(opt);
|
||||||
goto alloc_fail;
|
goto alloc_fail;
|
||||||
|
}
|
||||||
l = (size_t)(tmp - opt);
|
l = (size_t)(tmp - opt);
|
||||||
cp[l] = '\0'; /* truncate at '=' */
|
cp[l] = '\0'; /* truncate at '=' */
|
||||||
if (!valid_env_name(cp)) {
|
if (!valid_env_name(cp)) {
|
||||||
|
@ -440,7 +442,9 @@ sshauthopt_parse(const char *opts, const char **errstrp)
|
||||||
goto alloc_fail;
|
goto alloc_fail;
|
||||||
}
|
}
|
||||||
ret->env[ret->nenv++] = opt;
|
ret->env[ret->nenv++] = opt;
|
||||||
|
opt = NULL; /* transferred */
|
||||||
}
|
}
|
||||||
|
free(opt);
|
||||||
} else if (opt_match(&opts, "permitopen")) {
|
} else if (opt_match(&opts, "permitopen")) {
|
||||||
if (handle_permit(&opts, 0, &ret->permitopen,
|
if (handle_permit(&opts, 0, &ret->permitopen,
|
||||||
&ret->npermitopen, &errstr) != 0)
|
&ret->npermitopen, &errstr) != 0)
|
||||||
|
|
Loading…
Reference in New Issue