summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_ktrace.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2002-09-30 19:19:47 +0000
committerphk <phk@FreeBSD.org>2002-09-30 19:19:47 +0000
commit636cee6b011a5cb7b2b5e85cab9931131495ad2a (patch)
tree8a12dabc47e17db23849dcc73b6b229debbcfbb2 /sys/kern/kern_ktrace.c
parent5d0bf2949575750f40ac9e44e3270d24982da726 (diff)
downloadFreeBSD-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.c18
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);
OpenPOWER on IntegriCloud