--- a/src/su.c +++ b/src/su.c @@ -1122,8 +1122,12 @@ int main (int argc, char **argv) if (fd >= 0) { err = ioctl (fd, TIOCNOTTY, (char *) 0); + if (-1 == err && ENOTTY == errno) { + /* There are no controlling terminal already */ + err = 0; + } (void) close (fd); - } else if (ENXIO == errno) { + } else if (ENXIO == errno || EACCES == errno) { /* There are no controlling terminal already */ err = 0; }