Use _PATH_DEVNULL on FreeBSD when using kvm_openfiles so we work in a jail, bug #21.
This commit is contained in:
parent
096ac08fe3
commit
9854f9e3ee
@ -182,6 +182,7 @@ librc_hidden_def(rc_find_pids)
|
|||||||
# define _GET_KINFO_UID(kp) (kp.ki_ruid)
|
# define _GET_KINFO_UID(kp) (kp.ki_ruid)
|
||||||
# define _GET_KINFO_COMM(kp) (kp.ki_comm)
|
# define _GET_KINFO_COMM(kp) (kp.ki_comm)
|
||||||
# define _GET_KINFO_PID(kp) (kp.ki_pid)
|
# define _GET_KINFO_PID(kp) (kp.ki_pid)
|
||||||
|
# define _KVM_PATH _PATH_DEVNULL
|
||||||
# else
|
# else
|
||||||
# define _KVM_GETPROC2
|
# define _KVM_GETPROC2
|
||||||
# define _KINFO_PROC kinfo_proc2
|
# define _KINFO_PROC kinfo_proc2
|
||||||
@ -189,6 +190,7 @@ librc_hidden_def(rc_find_pids)
|
|||||||
# define _GET_KINFO_UID(kp) (kp.p_ruid)
|
# define _GET_KINFO_UID(kp) (kp.p_ruid)
|
||||||
# define _GET_KINFO_COMM(kp) (kp.p_comm)
|
# define _GET_KINFO_COMM(kp) (kp.p_comm)
|
||||||
# define _GET_KINFO_PID(kp) (kp.p_pid)
|
# define _GET_KINFO_PID(kp) (kp.p_pid)
|
||||||
|
# define _KVM_PATH NULL
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
pid_t *rc_find_pids (const char *exec, const char *cmd,
|
pid_t *rc_find_pids (const char *exec, const char *cmd,
|
||||||
@ -205,8 +207,10 @@ pid_t *rc_find_pids (const char *exec, const char *cmd,
|
|||||||
pid_t *tmp;
|
pid_t *tmp;
|
||||||
int npids = 0;
|
int npids = 0;
|
||||||
|
|
||||||
if ((kd = kvm_openfiles (NULL, NULL, NULL, O_RDONLY, errbuf)) == NULL) {
|
if ((kd = kvm_openfiles (_KVM_PATH, _KVM_PATH,
|
||||||
fprintf (stderr, "kvm_open: %s", errbuf);
|
NULL, O_RDONLY, errbuf)) == NULL)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "kvm_open: %s\n", errbuf);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,6 +219,12 @@ pid_t *rc_find_pids (const char *exec, const char *cmd,
|
|||||||
#else
|
#else
|
||||||
kp = kvm_getprocs (kd, KERN_PROC_PROC, 0, &processes);
|
kp = kvm_getprocs (kd, KERN_PROC_PROC, 0, &processes);
|
||||||
#endif
|
#endif
|
||||||
|
if ((kp == NULL && processes > 0) || (kp != NULL && processes < 0)) {
|
||||||
|
fprintf (stderr, "kvm_getprocs: %s\n", kvm_geterr (kd));
|
||||||
|
kvm_close (kd);
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < processes; i++) {
|
for (i = 0; i < processes; i++) {
|
||||||
pid_t p = _GET_KINFO_PID (kp[i]);
|
pid_t p = _GET_KINFO_PID (kp[i]);
|
||||||
if (pid != 0 && pid != p)
|
if (pid != 0 && pid != p)
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <paths.h>
|
||||||
#include <regex.h>
|
#include <regex.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user