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; }