diff options
author | des <des@FreeBSD.org> | 2005-03-09 12:16:45 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2005-03-09 12:16:45 +0000 |
commit | 21bc3da1762c9e0dd08914d75fd27e07d0c5e93b (patch) | |
tree | 61a723e730e480c91a0ee0e9679c38c6bf0d1e68 /sys/kern/kern_environment.c | |
parent | b4856acd04a52a4ba9817d7a4431fc513f49a0cf (diff) | |
download | FreeBSD-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.c | 7 |
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); } |