aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_environment.c
diff options
context:
space:
mode:
authorDavid Xu <davidxu@FreeBSD.org>2005-09-26 14:14:55 +0000
committerDavid Xu <davidxu@FreeBSD.org>2005-09-26 14:14:55 +0000
commit2b7182c6b7fc8c77f606926b42f471dfb9fa381b (patch)
tree42fdff0be28e0601ed5294e7fb010f9ba9d49064 /sys/kern/kern_environment.c
parentdb20dc4dbb9dd785871166dc1cfc1948aa355880 (diff)
downloadsrc-2b7182c6b7fc8c77f606926b42f471dfb9fa381b.tar.gz
src-2b7182c6b7fc8c77f606926b42f471dfb9fa381b.zip
Reorder statements to avoid accessing unknown memory.
In theory, invoking kenv with very long string can panic kernel.
Notes
Notes: svn path=/head/; revision=150568
Diffstat (limited to 'sys/kern/kern_environment.c')
-rw-r--r--sys/kern/kern_environment.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/kern_environment.c b/sys/kern/kern_environment.c
index 4fd84ae5310d..9bb88140e9a9 100644
--- a/sys/kern/kern_environment.c
+++ b/sys/kern/kern_environment.c
@@ -240,8 +240,8 @@ _getenv_dynamic(const char *name, int *idx)
sx_assert(&kenv_lock, SX_LOCKED);
len = strlen(name);
for (cp = kenvp[0], i = 0; cp != NULL; cp = kenvp[++i]) {
- if ((cp[len] == '=') &&
- (strncmp(cp, name, len) == 0)) {
+ if ((strncmp(cp, name, len) == 0) &&
+ (cp[len] == '=')) {
if (idx != NULL)
*idx = i;
return (cp + len + 1);