summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_environment.c
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2005-03-09 12:16:45 +0000
committerdes <des@FreeBSD.org>2005-03-09 12:16:45 +0000
commit21bc3da1762c9e0dd08914d75fd27e07d0c5e93b (patch)
tree61a723e730e480c91a0ee0e9679c38c6bf0d1e68 /sys/kern/kern_environment.c
parentb4856acd04a52a4ba9817d7a4431fc513f49a0cf (diff)
downloadFreeBSD-src-21bc3da1762c9e0dd08914d75fd27e07d0c5e93b.zip
FreeBSD-src-21bc3da1762c9e0dd08914d75fd27e07d0c5e93b.tar.gz
My addled brains didn't realize that since vtp points into value, we
can't freeenv(value) before we're done inspecting vtp[0]. Tested by: Anish Mistry <mistry.7@osu.edu>
Diffstat (limited to 'sys/kern/kern_environment.c')
-rw-r--r--sys/kern/kern_environment.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/kern_environment.c b/sys/kern/kern_environment.c
index 550be83..8c48864 100644
--- a/sys/kern/kern_environment.c
+++ b/sys/kern/kern_environment.c
@@ -458,9 +458,10 @@ getenv_quad(const char *name, quad_t *data)
if (value == NULL)
return (0);
iv = strtoq(value, &vtp, 0);
- freeenv(value);
- if (vtp == value || (vtp[0] != '\0' && vtp[1] != '\0'))
+ if (vtp == value || (vtp[0] != '\0' && vtp[1] != '\0')) {
+ freeenv(value);
return (0);
+ }
switch (vtp[0]) {
case 't': case 'T':
iv *= 1024;
@@ -473,9 +474,11 @@ getenv_quad(const char *name, quad_t *data)
case '\0':
break;
default:
+ freeenv(value);
return (0);
}
*data = iv;
+ freeenv(value);
return (1);
}
OpenPOWER on IntegriCloud