mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
(daemon): Define errno in case /dev/null is not the correct device.
This commit is contained in:
parent
5fa3cee8e9
commit
267a7a9eca
@ -65,10 +65,12 @@ daemon(nochdir, noclose)
|
||||
&& (fd = open_not_cancel(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
|
||||
struct stat64 st;
|
||||
|
||||
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) == 0
|
||||
&& __builtin_expect (S_ISCHR (st.st_mode), 1) != 0
|
||||
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) == 0)
|
||||
{
|
||||
if (__builtin_expect (S_ISCHR (st.st_mode), 1) != 0
|
||||
#if defined DEV_NULL_MAJOR && defined DEV_NULL_MINOR
|
||||
&& st.st_rdev == makedev (DEV_NULL_MAJOR, DEV_NULL_MINOR)
|
||||
&& (st.st_rdev
|
||||
== makedev (DEV_NULL_MAJOR, DEV_NULL_MINOR))
|
||||
#endif
|
||||
) {
|
||||
(void)__dup2(fd, STDIN_FILENO);
|
||||
@ -76,6 +78,13 @@ daemon(nochdir, noclose)
|
||||
(void)__dup2(fd, STDERR_FILENO);
|
||||
if (fd > 2)
|
||||
(void)__close (fd);
|
||||
} else {
|
||||
/* We must set an errno value since no
|
||||
function call actually failed. */
|
||||
close_not_cancel_no_status (fd);
|
||||
__set_errno (ENODEV);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
close_not_cancel_no_status (fd);
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user