diff options
author | alfred <alfred@FreeBSD.org> | 2001-01-06 09:34:20 +0000 |
---|---|---|
committer | alfred <alfred@FreeBSD.org> | 2001-01-06 09:34:20 +0000 |
commit | e326256dcc12359db64fa3d201d2ba676493351c (patch) | |
tree | 2d24a5f1b18beabcf0be16360ca1414b5602430f /sys | |
parent | 8132a144d583e9b9f77857d08fb14d18c3efbfbf (diff) | |
download | FreeBSD-src-e326256dcc12359db64fa3d201d2ba676493351c.zip FreeBSD-src-e326256dcc12359db64fa3d201d2ba676493351c.tar.gz |
Limit size of passed in data for utrace function.
Requested by: rwatson
Obtained from: NetBSD
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/kern_ktrace.c | 3 | ||||
-rw-r--r-- | sys/sys/ktrace.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index f0f187f..003247a 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -48,6 +48,7 @@ #include <sys/ktrace.h> #include <sys/malloc.h> #include <sys/syslog.h> +#include <sys/sysent.h> static MALLOC_DEFINE(M_KTRACE, "KTRACE", "KTRACE"); @@ -359,6 +360,8 @@ utrace(curp, uap) if (!KTRPOINT(p, KTR_USER)) return (0); + if (SCARG(uap, len) > KTR_USER_MAXLEN) + return (EINVAL); p->p_traceflag |= KTRFAC_ACTIVE; kth = ktrgetheader(KTR_USER); MALLOC(cp, caddr_t, uap->len, M_KTRACE, M_WAITOK); diff --git a/sys/sys/ktrace.h b/sys/sys/ktrace.h index 7c84690..2ca616b 100644 --- a/sys/sys/ktrace.h +++ b/sys/sys/ktrace.h @@ -136,6 +136,7 @@ struct ktr_csw { /* * KTR_USER - data comming from userland */ +#define KTR_USER_MAXLEN 2048 /* maximum length of passed data */ #define KTR_USER 7 /* |