From 7ce0dfc61b50a4cbcffd6faf5cbb26fab1c87b08 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Wed, 2 Jun 2010 14:30:13 -0400 Subject: [PATCH] Enable tty_is_devpts() support for Solaris with the "devices" filesystem. --- plugins/sudoers/check.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/sudoers/check.c b/plugins/sudoers/check.c index 3d9d79c98..847fff129 100644 --- a/plugins/sudoers/check.c +++ b/plugins/sudoers/check.c @@ -28,6 +28,9 @@ #ifdef __linux__ #include #endif +#if defined(__sun) && defined(__SVR4) +#include +#endif #ifndef __TANDEM # include #endif @@ -663,7 +666,7 @@ remove_timestamp(int remove) } /* - * Returns TRUE if tty lives on a devpts filesystem, else FALSE. + * Returns TRUE if tty lives on a devpts or /devices filesystem, else FALSE. * Unlike most filesystems, the ctime of devpts nodes is not updated when * the device node is written to, only when the inode's status changes, * typically via the chmod, chown, link, rename, or utimes system calls. @@ -685,6 +688,13 @@ tty_is_devpts(const char *tty) if (sfs.f_type == DEVPTS_SUPER_MAGIC) retval = TRUE; } +#elif defined(__sun) && defined(__SVR4) + struct statvfs sfs; + + if (statvfs(tty, &sfs) == 0) { + if (strcmp(sfs.f_fstr, "devices") == 0) + retval = TRUE; + } #endif /* __linux__ */ return retval; } -- 2.40.0