version 1.51, 2005/05/26 05:15:56 |
version 1.52, 2005/07/04 01:54:09 |
|
|
char *memf, *nlistf; |
char *memf, *nlistf; |
char buf[_POSIX2_LINE_MAX]; |
char buf[_POSIX2_LINE_MAX]; |
int cnt; |
int cnt; |
|
gid_t gid; |
|
|
arg = 0; |
arg = 0; |
what = KERN_PROC_ALL; |
what = KERN_PROC_ALL; |
|
|
* Discard setgid privileges if not the running kernel so that bad |
* Discard setgid privileges if not the running kernel so that bad |
* guys can't print interesting stuff from kernel memory. |
* guys can't print interesting stuff from kernel memory. |
*/ |
*/ |
if (nlistf != NULL || memf != NULL) { |
gid = getgid(); |
setegid(getgid()); |
if (nlistf != NULL || memf != NULL) |
setgid(getgid()); |
if (setresgid(gid, gid, gid) == -1) |
} |
err(1, "setresgid"); |
|
|
if ((kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, buf)) == NULL) |
if ((kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, buf)) == NULL) |
errx(1, "%s", buf); |
errx(1, "%s", buf); |
|
|
setegid(getgid()); |
if (nlistf == NULL && memf == NULL) |
setgid(getgid()); |
if (setresgid(gid, gid, gid) == -1) |
|
err(1, "setresgid"); |
|
|
if (*(argv += optind)) { |
if (*(argv += optind)) { |
for (; *argv; ++argv) { |
for (; *argv; ++argv) { |