]> granicus.if.org Git - sudo/commitdiff
Less confusing sysctl checks for kinfo_proc.
authorTodd C. Miller <Todd.Miller@sudo.ws>
Tue, 6 Mar 2018 00:35:02 +0000 (17:35 -0700)
committerTodd C. Miller <Todd.Miller@sudo.ws>
Tue, 6 Mar 2018 00:35:02 +0000 (17:35 -0700)
config.h.in
configure
configure.ac
plugins/sudoers/starttime.c
plugins/sudoers/sudoers.c
src/regress/ttyname/check_ttyname.c
src/tgetpass.c
src/ttyname.c

index 3bbd6ee2718ed58deb423798a6a3de861086f79f..e728a3d72e77a933b5a0c02ba48040e7430f9ba7 100644 (file)
 /* Define to 1 if you have the `killpg' function. */
 #undef HAVE_KILLPG
 
+/* Define to 1 if your system has a NetBSD-style kinfo_proc2 struct. */
+#undef HAVE_KINFO_PROC2_NETBSD
+
+/* Define to 1 if your system has a 4.4BSD-style kinfo_proc struct. */
+#undef HAVE_KINFO_PROC_44BSD
+
+/* Define to 1 if your system has a FreeBSD-style kinfo_proc struct. */
+#undef HAVE_KINFO_PROC_FREEBSD
+
+/* Define to 1 if your system has an OpenBSD-style kinfo_proc struct. */
+#undef HAVE_KINFO_PROC_OPENBSD
+
 /* Define to 1 if you have the `krb5_get_init_creds_opt_alloc' function. */
 #undef HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC
 
 /* Define to 1 if the system has the type `struct in6_addr'. */
 #undef HAVE_STRUCT_IN6_ADDR
 
-/* Define to 1 if `p_tdev' is a member of `struct kinfo_proc2'. */
-#undef HAVE_STRUCT_KINFO_PROC2_P_TDEV
-
-/* Define to 1 if `ki_tdev' is a member of `struct kinfo_proc'. */
-#undef HAVE_STRUCT_KINFO_PROC_KI_TDEV
-
-/* Define to 1 if `kp_eproc.e_tdev' is a member of `struct kinfo_proc'. */
-#undef HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV
-
-/* Define to 1 if `p_tdev' is a member of `struct kinfo_proc'. */
-#undef HAVE_STRUCT_KINFO_PROC_P_TDEV
-
 /* Define to 1 if `pr_ttydev' is a member of `struct psinfo'. */
 #undef HAVE_STRUCT_PSINFO_PR_TTYDEV
 
index 6af6c983bc2a3e05890f187686884bfef4a311fb..aad6822cf575e727da55fbf19e9dc9e572608893 100755 (executable)
--- a/configure
+++ b/configure
@@ -19235,60 +19235,44 @@ _ACEOF
 fi
 done
 
-    ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "ki_tdev" "ac_cv_member_struct_kinfo_proc_ki_tdev" "
+    ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "ki_structsize" "ac_cv_member_struct_kinfo_proc_ki_structsize" "
 #      include <sys/param.h>
 #      include <sys/sysctl.h>
 #      include <sys/user.h>
 
 "
-if test "x$ac_cv_member_struct_kinfo_proc_ki_tdev" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KINFO_PROC_KI_TDEV 1
-_ACEOF
-
+if test "x$ac_cv_member_struct_kinfo_proc_ki_structsize" = xyes; then :
+  $as_echo "#define HAVE_KINFO_PROC_FREEBSD 1" >>confdefs.h
 
 else
 
-       ac_fn_c_check_member "$LINENO" "struct kinfo_proc2" "p_tdev" "ac_cv_member_struct_kinfo_proc2_p_tdev" "
+       ac_fn_c_check_member "$LINENO" "struct kinfo_proc2" "p_paddr" "ac_cv_member_struct_kinfo_proc2_p_paddr" "
 #          include <sys/param.h>
 #          include <sys/sysctl.h>
 
 "
-if test "x$ac_cv_member_struct_kinfo_proc2_p_tdev" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KINFO_PROC2_P_TDEV 1
-_ACEOF
-
+if test "x$ac_cv_member_struct_kinfo_proc2_p_paddr" = xyes; then :
+  $as_echo "#define HAVE_KINFO_PROC2_NETBSD 1" >>confdefs.h
 
 else
 
-           ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "p_tdev" "ac_cv_member_struct_kinfo_proc_p_tdev" "
+           ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "p_paddr" "ac_cv_member_struct_kinfo_proc_p_paddr" "
 #              include <sys/param.h>
 #              include <sys/sysctl.h>
 
 "
-if test "x$ac_cv_member_struct_kinfo_proc_p_tdev" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KINFO_PROC_P_TDEV 1
-_ACEOF
-
+if test "x$ac_cv_member_struct_kinfo_proc_p_paddr" = xyes; then :
+  $as_echo "#define HAVE_KINFO_PROC_OPENBSD 1" >>confdefs.h
 
 else
 
-               ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "kp_eproc.e_tdev" "ac_cv_member_struct_kinfo_proc_kp_eproc_e_tdev" "
+               ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "kp_proc" "ac_cv_member_struct_kinfo_proc_kp_proc" "
 #                  include <sys/param.h>
 #                  include <sys/sysctl.h>
 
 "
-if test "x$ac_cv_member_struct_kinfo_proc_kp_eproc_e_tdev" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV 1
-_ACEOF
-
+if test "x$ac_cv_member_struct_kinfo_proc_kp_proc" = xyes; then :
+  $as_echo "#define HAVE_KINFO_PROC_44BSD 1" >>confdefs.h
 
 fi
 
@@ -28792,6 +28776,9 @@ fi
 
 
 
+
+
+
 
 
 
index 8d5c8685b274b53b10891970bb4370a3a1dd7149..310bb206a118868c8f38252c24fbb98fc774a697 100644 (file)
@@ -2532,10 +2532,10 @@ if test "$utmp_style" = "LEGACY"; then
 fi
 
 AC_CHECK_FUNCS([sysctl], [AC_CHECK_FUNCS([devname])
-    AC_CHECK_MEMBERS([struct kinfo_proc.ki_tdev], [], [
-       AC_CHECK_MEMBERS([struct kinfo_proc2.p_tdev], [], [
-           AC_CHECK_MEMBERS([struct kinfo_proc.p_tdev], [], [
-               AC_CHECK_MEMBERS([struct kinfo_proc.kp_eproc.e_tdev], [], [], [
+    AC_CHECK_MEMBER([struct kinfo_proc.ki_structsize], [AC_DEFINE(HAVE_KINFO_PROC_FREEBSD)], [
+       AC_CHECK_MEMBER([struct kinfo_proc2.p_paddr], [AC_DEFINE(HAVE_KINFO_PROC2_NETBSD)], [
+           AC_CHECK_MEMBER([struct kinfo_proc.p_paddr], [AC_DEFINE(HAVE_KINFO_PROC_OPENBSD)], [
+               AC_CHECK_MEMBER([struct kinfo_proc.kp_proc], [AC_DEFINE(HAVE_KINFO_PROC_44BSD)], [], [
 #                  include <sys/param.h>
 #                  include <sys/sysctl.h>
                ])
@@ -4505,7 +4505,10 @@ AH_TEMPLATE(HAVE___NSS_XBYY_BUF_ALLOC, [Define to 1 if you have the `__nss_XbyY_
 AH_TEMPLATE(NEED_RESOLV_H, [Define to 1 if resolv.h must be included to get the `inet_ntop' or `inet_pton' function prototypes.])
 AH_TEMPLATE(HAVE_STRNLEN, [Define to 1 if you have the `strnlen' function.])
 AH_TEMPLATE(PAM_SUN_CODEBASE, [Define to 1 if your system uses a Solaris-derived PAM and not Linux-PAM or OpenPAM.])
-
+AH_TEMPLATE(HAVE_KINFO_PROC_44BSD, [Define to 1 if your system has a 4.4BSD-style kinfo_proc struct.])
+AH_TEMPLATE(HAVE_KINFO_PROC_FREEBSD, [Define to 1 if your system has a FreeBSD-style kinfo_proc struct.])
+AH_TEMPLATE(HAVE_KINFO_PROC2_NETBSD, [Define to 1 if your system has a NetBSD-style kinfo_proc2 struct.])
+AH_TEMPLATE(HAVE_KINFO_PROC_OPENBSD, [Define to 1 if your system has an OpenBSD-style kinfo_proc struct.])
 dnl
 dnl Bits to copy verbatim into config.h.in
 dnl
index 112a20bbdfa3e67df30c0ab96e90251c13bdb3e4..4c0f2ec465fb0c8d19e702c92200fe5b5fded893 100644 (file)
@@ -24,9 +24,9 @@
 
 #include <sys/types.h>
 #include <sys/stat.h>
-#if defined(HAVE_STRUCT_KINFO_PROC_P_TDEV) || defined (HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV) || defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV)
+#if defined(HAVE_44BSD_KINFO_PROC) || defined (HAVE_OPENBSD_KINFO_PROC) || defined(HAVE_NETBSD_KINFO_PROC2)
 # include <sys/sysctl.h>
-#elif defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV)
+#elif defined(HAVE_FREEBSD_KINFO_PROC)
 # include <sys/sysctl.h>
 # include <sys/user.h>
 #endif
 /*
  * Arguments for sysctl(2) when reading the process start time.
  */
-#if defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV)
+#if defined(HAVE_NETBSD_KINFO_PROC)
 # define SUDO_KERN_PROC                KERN_PROC2
 # define sudo_kinfo_proc       kinfo_proc2
 # define sudo_kp_namelen       6
-#elif defined(HAVE_STRUCT_KINFO_PROC_P_TDEV)
+#elif defined(HAVE_OPENBSD_KINFO_PROC)
 # define SUDO_KERN_PROC                KERN_PROC
 # define sudo_kinfo_proc       kinfo_proc
 # define sudo_kp_namelen       6
-#elif defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV)
+#elif defined(HAVE_FREEBSD_KINFO_PROC) || defined(HAVE_44BSD_KINFO_PROC)
 # define SUDO_KERN_PROC                KERN_PROC
 # define sudo_kinfo_proc       kinfo_proc
 # define sudo_kp_namelen       4
@@ -107,11 +107,11 @@ get_starttime(pid_t pid, struct timespec *starttime)
        rc = sysctl(mib, sudo_kp_namelen, ki_proc, &size, NULL, 0);
     } while (rc == -1 && errno == ENOMEM);
     if (rc != -1) {
-#if defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV)
+#if defined(HAVE_FREEBSD_KINFO_PROC)
        /* FreeBSD and Dragonfly */
        starttime->tv_sec = ki_proc->ki_start.tv_sec;
        starttime->tv_nsec = ki_proc->ki_start.tv_usec / 1000;
-#elif defined(HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV)
+#elif defined(HAVE_44BSD_KINFO_PROC)
        /* 4.4BSD and macOS */
        starttime->tv_sec = ki_proc->kp_proc.p_starttime.tv_sec;
        starttime->tv_nsec = ki_proc->kp_proc.p_starttime.tv_usec / 1000;
index 3cc1147882236b046c21edb9807bebbd1f85bdc8..16ef7e1ae0fdca5dfcbb556363929522ae3f7a75 100644 (file)
@@ -1298,7 +1298,7 @@ create_admin_success_flag(void)
 static bool
 tty_present(void)
 {
-#if defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_P_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV) || defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || defined(HAVE_PSTAT_GETPROC) || defined(__linux__)
+#if defined(HAVE_KINFO_PROC2_NETBSD) || defined(HAVE_KINFO_PROC_OPENBSD) || defined(HAVE_KINFO_PROC_FREEBSD) || defined(HAVE_KINFO_PROC_44BSD) || defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || defined(HAVE_PSTAT_GETPROC) || defined(__linux__)
     return user_ttypath != NULL;
 #else
     int fd = open(_PATH_TTY, O_RDWR);
index 6b0c0c2db0defa9e14f36ef396e0a1261bc2cf47..1609cd096b7935d29da46e9f70161cd94a389ec8 100644 (file)
@@ -52,10 +52,10 @@ main(int argc, char *argv[])
     if (get_process_ttyname(pathbuf, sizeof(pathbuf)) != NULL)
        tty_sudo = pathbuf;
 
-#if defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV) || \
-    defined(HAVE_STRUCT_KINFO_PROC_P_TDEV) || \
-    defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV) || \
-    defined(HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV) || \
+#if defined(HAVE_KINFO_PROC2_NETBSD) || \
+    defined(HAVE_KINFO_PROC_OPENBSD) || \
+    defined(HAVE_KINFO_PROC_FREEBSD) || \
+    defined(HAVE_KINFO_PROC_44BSD) || \
     defined(HAVE__TTYNAME_DEV) || defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || \
     defined(HAVE_PSTAT_GETPROC) || defined(__linux__)
 
index 85fc98cab3c9db16f69a7515933affb720dbfe25..6956c059098bf9aac3b8956b3eb7bfbfd255e147 100644 (file)
@@ -367,7 +367,7 @@ tgetpass_handler(int s)
 static bool
 tty_present(void)
 {
-#if defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_P_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV) || defined(HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV) || defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || defined(HAVE_PSTAT_GETPROC) || defined(__linux__)
+#if defined(HAVE_KINFO_PROC2_NETBSD) || defined(HAVE_KINFO_PROC_OPENBSD) || defined(HAVE_KINFO_PROC_FREEBSD) || defined(HAVE_KINFO_PROC_44BSD) || defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || defined(HAVE_PSTAT_GETPROC) || defined(__linux__)
     debug_decl(tty_present, SUDO_DEBUG_UTIL)
     debug_return_bool(user_details.tty != NULL);
 #else
index a87e6b6f56b5b930aec3b00e9ba7f4e39b04e011..13f0276fd8970a36e64ff47760f56366e2be18a7 100644 (file)
@@ -42,9 +42,9 @@
 #include <fcntl.h>
 #include <limits.h>
 #include <dirent.h>
-#if defined(HAVE_STRUCT_KINFO_PROC_P_TDEV) || defined (HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV) || defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV)
+#if defined(HAVE_KINFO_PROC2_NETBSD) || defined (HAVE_KINFO_PROC_OPENBSD) || defined(HAVE_KINFO_PROC_44BSD)
 # include <sys/sysctl.h>
-#elif defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV)
+#elif defined(HAVE_KINFO_PROC_FREEBSD)
 # include <sys/sysctl.h>
 # include <sys/user.h>
 #endif
 /*
  * How to access the tty device number in struct kinfo_proc.
  */
-#if defined(HAVE_STRUCT_KINFO_PROC2_P_TDEV)
+#if defined(HAVE_KINFO_PROC2_NETBSD)
 # define SUDO_KERN_PROC                KERN_PROC2
 # define sudo_kinfo_proc       kinfo_proc2
 # define sudo_kp_tdev          p_tdev
 # define sudo_kp_namelen       6
-#elif defined(HAVE_STRUCT_KINFO_PROC_P_TDEV)
+#elif defined(HAVE_KINFO_PROC_OPENBSD)
 # define SUDO_KERN_PROC                KERN_PROC
 # define sudo_kinfo_proc       kinfo_proc
 # define sudo_kp_tdev          p_tdev
 # define sudo_kp_namelen       6
-#elif defined(HAVE_STRUCT_KINFO_PROC_KI_TDEV)
+#elif defined(HAVE_KINFO_PROC_FREEBSD)
 # define SUDO_KERN_PROC                KERN_PROC
 # define sudo_kinfo_proc       kinfo_proc
 # define sudo_kp_tdev          ki_tdev
 # define sudo_kp_namelen       4
-#elif defined(HAVE_STRUCT_KINFO_PROC_KP_EPROC_E_TDEV)
+#elif defined(HAVE_KINFO_PROC_44BSD)
 # define SUDO_KERN_PROC                KERN_PROC
 # define sudo_kinfo_proc       kinfo_proc
 # define sudo_kp_tdev          kp_eproc.e_tdev