=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/vmstat/vmstat.c,v retrieving revision 1.95 retrieving revision 1.96 diff -c -r1.95 -r1.96 *** src/usr.bin/vmstat/vmstat.c 2005/04/21 04:42:56 1.95 --- src/usr.bin/vmstat/vmstat.c 2005/07/04 01:54:10 1.96 *************** *** 1,5 **** /* $NetBSD: vmstat.c,v 1.29.4.1 1996/06/05 00:21:05 cgd Exp $ */ ! /* $OpenBSD: vmstat.c,v 1.95 2005/04/21 04:42:56 mickey Exp $ */ /* * Copyright (c) 1980, 1986, 1991, 1993 --- 1,5 ---- /* $NetBSD: vmstat.c,v 1.29.4.1 1996/06/05 00:21:05 cgd Exp $ */ ! /* $OpenBSD: vmstat.c,v 1.96 2005/07/04 01:54:10 djm Exp $ */ /* * Copyright (c) 1980, 1986, 1991, 1993 *************** *** 40,46 **** #if 0 static char sccsid[] = "@(#)vmstat.c 8.1 (Berkeley) 6/6/93"; #else ! static const char rcsid[] = "$OpenBSD: vmstat.c,v 1.95 2005/04/21 04:42:56 mickey Exp $"; #endif #endif /* not lint */ --- 40,46 ---- #if 0 static char sccsid[] = "@(#)vmstat.c 8.1 (Berkeley) 6/6/93"; #else ! static const char rcsid[] = "$OpenBSD: vmstat.c,v 1.96 2005/07/04 01:54:10 djm Exp $"; #endif #endif /* not lint */ *************** *** 151,156 **** --- 151,157 ---- u_int interval; int reps; char errbuf[_POSIX2_LINE_MAX]; + gid_t gid; interval = reps = todo = 0; while ((c = getopt(argc, argv, "c:fiM:mN:stw:vz")) != -1) { *************** *** 199,207 **** if (todo == 0) todo = VMSTAT; if (nlistf != NULL || memf != NULL) { ! setegid(getgid()); ! setgid(getgid()); } /* --- 200,209 ---- if (todo == 0) todo = VMSTAT; + gid = getgid(); if (nlistf != NULL || memf != NULL) { ! if (setresgid(gid, gid, gid) == -1) ! err(1, "setresgid"); } /* *************** *** 215,223 **** if (kd == 0) errx(1, "kvm_openfiles: %s", errbuf); if ((c = kvm_nlist(kd, namelist)) != 0) { - setgid(getgid()); - setegid(getegid()); if (c > 0) { (void)fprintf(stderr, --- 217,227 ---- if (kd == 0) errx(1, "kvm_openfiles: %s", errbuf); + if (nlistf == NULL && memf == NULL) + if (setresgid(gid, gid, gid) == -1) + err(1, "setresgid"); + if ((c = kvm_nlist(kd, namelist)) != 0) { if (c > 0) { (void)fprintf(stderr, *************** *** 234,244 **** errx(1, "kvm_nlist: %s", kvm_geterr(kd)); } #ifdef notyet ! } #endif /* notyet */ - - setegid(getegid()); - setgid(getgid()); mib[0] = CTL_HW; mib[1] = HW_NCPU; --- 238,246 ---- errx(1, "kvm_nlist: %s", kvm_geterr(kd)); } #ifdef notyet ! } else if (setresgid(gid, gid, gid) == -1) ! err(1, "setresgid"); #endif /* notyet */ mib[0] = CTL_HW; mib[1] = HW_NCPU;