diff options
Diffstat (limited to 'support/support_can_chroot.c')
-rw-r--r-- | support/support_can_chroot.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/support/support_can_chroot.c b/support/support_can_chroot.c deleted file mode 100644 index 0dfd2deb54..0000000000 --- a/support/support_can_chroot.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Return true if the process can perform a chroot operation. - Copyright (C) 2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <errno.h> -#include <stdio.h> -#include <support/check.h> -#include <support/namespace.h> -#include <support/support.h> -#include <sys/stat.h> -#include <unistd.h> -#include <xunistd.h> - -static void -callback (void *closure) -{ - int *result = closure; - struct stat64 before; - xstat ("/dev", &before); - if (chroot ("/dev") != 0) - { - *result = errno; - return; - } - struct stat64 after; - xstat ("/", &after); - TEST_VERIFY (before.st_dev == after.st_dev); - TEST_VERIFY (before.st_ino == after.st_ino); - *result = 0; -} - -bool -support_can_chroot (void) -{ - int *result = support_shared_allocate (sizeof (*result)); - *result = 0; - support_isolate_in_subprocess (callback, result); - bool ok = *result == 0; - if (!ok) - { - static bool already_warned; - if (!already_warned) - { - already_warned = true; - errno = *result; - printf ("warning: this process does not support chroot: %m\n"); - } - } - support_shared_free (result); - return ok; -} |