Date: Fri, 24 Oct 2003 16:26:20 +0900 From: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp> To: audit@freebsd.org Subject: kvm.c patch Message-ID: <ybsekx3m6zn.wl@ett.sat.t.u-tokyo.ac.jp>
next in thread | raw e-mail | index | archive | help
Hi, Does anyone object to committing this patch to the tree? This patch allows kvm_open() to open any raw devices as a crush dump. This enables us to use /dev/fwmem* as a core file. (at least for i386 with hw.firewire.fwmem.eui64_hi/lo) e.g. ps -M /dev/fwmem0.0 -N kernel.debug dmesg -M /dev/fwmem0.0 -N kernel.debug gdb -k -c /dev/fwmem0.0 kernel.debug My concern is setu(g)ided command which is linked with libkvm. As far as I checked, there are only commands setgided with kmem, and the group kmem is allowed to access only /dev/mem and /dev/kmem for default installation. --- //depot/vendor/freebsd/src/lib/libkvm/kvm.c 2003/07/31 16:38:08 +++ //depot/user/simokawa/firewire/lib/libkvm/kvm.c 2003/10/08 09:29:09 @@ -192,11 +192,8 @@ */ if (strcmp(mf, _PATH_DEVNULL) == 0) { kd->vmfd = open(_PATH_DEVNULL, O_RDONLY); - } else if (strcmp(mf, _PATH_MEM) != 0) { - _kvm_err(kd, kd->program, - "%s: not physical memory device", mf); - goto failed; - } else { + return (kd); + } else if (strcmp(mf, _PATH_MEM) == 0) { if ((kd->vmfd = open(_PATH_KMEM, flag)) < 0) { _kvm_syserr(kd, kd->program, "%s", _PATH_KMEM); goto failed; @@ -205,24 +202,24 @@ _kvm_syserr(kd, kd->program, "%s", _PATH_KMEM); goto failed; } + return (kd); } - } else { - /* - * This is a crash dump. - * Initialize the virtual address translation machinery, - * but first setup the namelist fd. - */ - if ((kd->nlfd = open(uf, O_RDONLY, 0)) < 0) { - _kvm_syserr(kd, kd->program, "%s", uf); - goto failed; - } - if (fcntl(kd->nlfd, F_SETFD, FD_CLOEXEC) < 0) { - _kvm_syserr(kd, kd->program, "%s", uf); - goto failed; - } - if (_kvm_initvtop(kd) < 0) - goto failed; + } + /* + * This is a crash dump. + * Initialize the virtual address translation machinery, + * but first setup the namelist fd. + */ + if ((kd->nlfd = open(uf, O_RDONLY, 0)) < 0) { + _kvm_syserr(kd, kd->program, "%s", uf); + goto failed; + } + if (fcntl(kd->nlfd, F_SETFD, FD_CLOEXEC) < 0) { + _kvm_syserr(kd, kd->program, "%s", uf); + goto failed; } + if (_kvm_initvtop(kd) < 0) + goto failed; return (kd); failed: /* /\ Hidetoshi Shimokawa \/ simokawa@sat.t.u-tokyo.ac.jp PGP public key: http://www.sat.t.u-tokyo.ac.jp/~simokawa/pgp.html
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ybsekx3m6zn.wl>