From 39b8b958208a725f51def846edd711126495172f Mon Sep 17 00:00:00 2001 From: Chaskiel M Grundman Date: Tue, 17 Jan 2006 16:08:20 +0000 Subject: [PATCH] STABLE14-tiger-sysctl-20060117 FIXES 25327 implementation of sysctl for tiger (cherry picked from commit ebf35c3f884b40616700b4b0b2462731cda290ae) --- src/afs/DARWIN/osi_vfsops.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/afs/DARWIN/osi_vfsops.c b/src/afs/DARWIN/osi_vfsops.c index d6288b6dec..a9bc7e3f7f 100644 --- a/src/afs/DARWIN/osi_vfsops.c +++ b/src/afs/DARWIN/osi_vfsops.c @@ -503,8 +503,23 @@ int afs_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, switch (name[2]) { case AFS_SC_DARWIN_ALL_REALMODES: #ifdef AFS_DARWIN80_ENV - newlen; - /* XXX complicated */ + if (oldp != USER_ADDR_NULL && oldlenp == NULL) + return (EFAULT); + if (oldp && *oldlenp < sizeof(u_int32_t)) + return (ENOMEM); + if (newp && newlen != sizeof(u_int32_t)) + return (EINVAL); + *oldlenp = sizeof(u_int32_t); + if (oldp) { + if ((error = copyout(&afs_darwin_realmodes, + oldp, sizeof(u_int32_t)))) { + return error; + } + } + if (newp) + return copyin(newp, &afs_darwin_realmodes, + sizeof(u_int32_t)); + return 0; #else return sysctl_int(oldp, oldlenp, newp, newlen, &afs_darwin_realmodes);