diff options
| author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2004-02-22 12:31:44 +0000 |
|---|---|---|
| committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2004-02-22 12:31:44 +0000 |
| commit | 63dba32b76bdbc5438c5121c7209f7a8f6774b28 (patch) | |
| tree | 1c4d31f4b056d45cd39f0c68f6aad1b1af2ebd1c /sys/kern/kern_sysctl.c | |
| parent | 47c524ddd41a4d07b2f0d1847ff22c43babbe1ed (diff) | |
Notes
Diffstat (limited to 'sys/kern/kern_sysctl.c')
| -rw-r--r-- | sys/kern/kern_sysctl.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index e16c890e8649..e23a5912f4d0 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -1175,12 +1175,21 @@ sysctl_root(SYSCTL_HANDLER_ARGS) if (!oid->oid_handler) return EINVAL; - if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE) - error = oid->oid_handler(oid, (int *)arg1 + indx, arg2 - indx, - req); - else - error = oid->oid_handler(oid, oid->oid_arg1, oid->oid_arg2, - req); + if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE) { + (int *)arg1 += indx; + arg2 -= indx; + } else { + arg1 = oid->oid_arg1; + arg2 = oid->oid_arg2; + } +#ifdef MAC + error = mac_check_system_sysctl(req->td->td_ucred, oid, arg1, arg2, + req); + if (error != 0) + return (error); +#endif + error = oid->oid_handler(oid, arg1, arg2, req); + return (error); } @@ -1272,15 +1281,6 @@ userland_sysctl(struct thread *td, int *name, u_int namelen, void *old, SYSCTL_LOCK(); -#ifdef MAC - error = mac_check_system_sysctl(td->td_ucred, name, namelen, old, - oldlenp, inkernel, new, newlen); - if (error) { - SYSCTL_UNLOCK(); - return (error); - } -#endif - do { req2 = req; error = sysctl_root(0, name, namelen, &req2); |
