kern_sysctl.c (3038) | kern_sysctl.c (3308) |
---|---|
1/*- 2 * Copyright (c) 1982, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Mike Karels at Berkeley Software Design, Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 20 unchanged lines hidden (view full) --- 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * @(#)kern_sysctl.c 8.4 (Berkeley) 4/14/94 | 1/*- 2 * Copyright (c) 1982, 1986, 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Mike Karels at Berkeley Software Design, Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 20 unchanged lines hidden (view full) --- 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * @(#)kern_sysctl.c 8.4 (Berkeley) 4/14/94 |
37 * $Id: kern_sysctl.c,v 1.14 1994/09/21 03:46:46 wollman Exp $ | 37 * $Id: kern_sysctl.c,v 1.15 1994/09/23 19:07:17 wollman Exp $ |
38 */ 39 40/* 41 * sysctl system call. 42 */ 43 44#include <sys/param.h> 45#include <sys/systm.h> --- 51 unchanged lines hidden (view full) --- 97 98 if (uap->new != NULL && (error = suser(p->p_ucred, &p->p_acflag))) 99 return (error); 100 /* 101 * all top-level sysctl names are non-terminal 102 */ 103 if (uap->namelen > CTL_MAXNAME || uap->namelen < 2) 104 return (EINVAL); | 38 */ 39 40/* 41 * sysctl system call. 42 */ 43 44#include <sys/param.h> 45#include <sys/systm.h> --- 51 unchanged lines hidden (view full) --- 97 98 if (uap->new != NULL && (error = suser(p->p_ucred, &p->p_acflag))) 99 return (error); 100 /* 101 * all top-level sysctl names are non-terminal 102 */ 103 if (uap->namelen > CTL_MAXNAME || uap->namelen < 2) 104 return (EINVAL); |
105 if (error = copyin(uap->name, &name, uap->namelen * sizeof(int))) | 105 error = copyin(uap->name, &name, uap->namelen * sizeof(int)); 106 if (error) |
106 return (error); 107 108 switch (name[0]) { 109 case CTL_KERN: 110 fn = kern_sysctl; 111 if (name[1] != KERN_VNODE) /* XXX */ 112 dolock = 0; 113 break; --- 452 unchanged lines hidden (view full) --- 566 567 /* 568 * first copyout filehead 569 */ 570 if (buflen < sizeof(filehead)) { 571 *sizep = 0; 572 return (0); 573 } | 107 return (error); 108 109 switch (name[0]) { 110 case CTL_KERN: 111 fn = kern_sysctl; 112 if (name[1] != KERN_VNODE) /* XXX */ 113 dolock = 0; 114 break; --- 452 unchanged lines hidden (view full) --- 567 568 /* 569 * first copyout filehead 570 */ 571 if (buflen < sizeof(filehead)) { 572 *sizep = 0; 573 return (0); 574 } |
574 if (error = copyout((caddr_t)&filehead, where, sizeof(filehead))) | 575 error = copyout((caddr_t)&filehead, where, sizeof(filehead)); 576 if (error) |
575 return (error); 576 buflen -= sizeof(filehead); 577 where += sizeof(filehead); 578 579 /* 580 * followed by an array of file structures 581 */ 582 for (fp = filehead; fp != NULL; fp = fp->f_filef) { 583 if (buflen < sizeof(struct file)) { 584 *sizep = where - start; 585 return (ENOMEM); 586 } | 577 return (error); 578 buflen -= sizeof(filehead); 579 where += sizeof(filehead); 580 581 /* 582 * followed by an array of file structures 583 */ 584 for (fp = filehead; fp != NULL; fp = fp->f_filef) { 585 if (buflen < sizeof(struct file)) { 586 *sizep = where - start; 587 return (ENOMEM); 588 } |
587 if (error = copyout((caddr_t)fp, where, sizeof (struct file))) | 589 error = copyout((caddr_t)fp, where, sizeof (struct file)); 590 if (error) |
588 return (error); 589 buflen -= sizeof(struct file); 590 where += sizeof(struct file); 591 } 592 *sizep = where - start; 593 return (0); 594} 595 --- 60 unchanged lines hidden (view full) --- 656 657 case KERN_PROC_RUID: 658 if (p->p_cred->p_ruid != (uid_t)name[1]) 659 continue; 660 break; 661 } 662 if (buflen >= sizeof(struct kinfo_proc)) { 663 fill_eproc(p, &eproc); | 591 return (error); 592 buflen -= sizeof(struct file); 593 where += sizeof(struct file); 594 } 595 *sizep = where - start; 596 return (0); 597} 598 --- 60 unchanged lines hidden (view full) --- 659 660 case KERN_PROC_RUID: 661 if (p->p_cred->p_ruid != (uid_t)name[1]) 662 continue; 663 break; 664 } 665 if (buflen >= sizeof(struct kinfo_proc)) { 666 fill_eproc(p, &eproc); |
664 if (error = copyout((caddr_t)p, &dp->kp_proc, 665 sizeof(struct proc))) | 667 error = copyout((caddr_t)p, &dp->kp_proc, 668 sizeof(struct proc)); 669 if (error) |
666 return (error); | 670 return (error); |
667 if (error = copyout((caddr_t)&eproc, &dp->kp_eproc, 668 sizeof(eproc))) | 671 error = copyout((caddr_t)&eproc, &dp->kp_eproc, 672 sizeof(eproc)); 673 if (error) |
669 return (error); 670 dp++; 671 buflen -= sizeof(struct kinfo_proc); 672 } 673 needed += sizeof(struct kinfo_proc); 674 } 675 if (doingzomb == 0) { 676 p = zombproc; --- 158 unchanged lines hidden --- | 674 return (error); 675 dp++; 676 buflen -= sizeof(struct kinfo_proc); 677 } 678 needed += sizeof(struct kinfo_proc); 679 } 680 if (doingzomb == 0) { 681 p = zombproc; --- 158 unchanged lines hidden --- |