diff options
author | phk <phk@FreeBSD.org> | 2002-09-30 19:19:47 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2002-09-30 19:19:47 +0000 |
commit | 636cee6b011a5cb7b2b5e85cab9931131495ad2a (patch) | |
tree | 8a12dabc47e17db23849dcc73b6b229debbcfbb2 /sys/kern/kern_ktrace.c | |
parent | 5d0bf2949575750f40ac9e44e3270d24982da726 (diff) | |
download | FreeBSD-src-636cee6b011a5cb7b2b5e85cab9931131495ad2a.zip FreeBSD-src-636cee6b011a5cb7b2b5e85cab9931131495ad2a.tar.gz |
Plug memory leaks.
Detected by: FlexeLint
Approved by: jhb
Diffstat (limited to 'sys/kern/kern_ktrace.c')
-rw-r--r-- | sys/kern/kern_ktrace.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index 537072d..0ad2df3 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -325,8 +325,11 @@ ktrsyscall(code, narg, args) bcopy(args, buf, buflen); } req = ktr_getrequest(KTR_SYSCALL); - if (req == NULL) + if (req == NULL) { + if (buf != NULL) + free(buf, M_KTRACE); return; + } ktp = &req->ktr_data.ktr_syscall; ktp->ktr_code = code; ktp->ktr_narg = narg; @@ -372,8 +375,11 @@ ktrnamei(path) bcopy(path, buf, namelen); } req = ktr_getrequest(KTR_NAMEI); - if (req == NULL) + if (req == NULL) { + if (buf != NULL) + free(buf, M_KTRACE); return; + } if (namelen > 0) { req->ktr_header.ktr_len = namelen; req->ktr_header.ktr_buffer = buf; @@ -621,11 +627,15 @@ utrace(td, uap) return (EINVAL); cp = malloc(uap->len, M_KTRACE, M_WAITOK); error = copyin(uap->addr, cp, uap->len); - if (error) + if (error) { + free(cp, M_KTRACE); return (error); + } req = ktr_getrequest(KTR_USER); - if (req == NULL) + if (req == NULL) { + free(cp, M_KTRACE); return (0); + } req->ktr_header.ktr_buffer = cp; req->ktr_header.ktr_len = uap->len; ktr_submitrequest(req); |