From 9e08fc03ba3e9d777718d3e053c1e08737f360b3 Mon Sep 17 00:00:00 2001
From: Marcus Comstedt <marcus@mc.pp.se>
Date: Mon, 4 Jan 2021 16:11:34 +0100
Subject: [PATCH] Build [Configure]: Blacklist chroot on macOS

The prototype is not available with _POSIX_C_SOURCE.
---
 src/configure.in                | 3 +++
 src/modules/system/configure.in | 2 +-
 src/signal_handler.c            | 2 ++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/configure.in b/src/configure.in
index 5aa19b759f..70b4203dfe 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -673,7 +673,9 @@ case "$pike_cv_sys_os" in
       fi
    ;;
   Darwin*)
+   # macOS lacks prototypes for these with _POSIX_C_SOURCE
    ac_cv_func_getpagesize="no"
+   ac_cv_func_chroot="no"
    ;;
 esac
 
@@ -4565,6 +4567,7 @@ AC_CHECK_FUNCS( \
  _crypt \
  poll \
  accept4 \
+ chroot \
  closefrom \
  crypt \
  fdwalk \
diff --git a/src/modules/system/configure.in b/src/modules/system/configure.in
index 91de086473..4a19a8bcaa 100644
--- a/src/modules/system/configure.in
+++ b/src/modules/system/configure.in
@@ -91,7 +91,7 @@ AC_HAVE_FUNCS(syslog link symlink readlink resolvepath realpath chown lchown \
 	getpwnam getspnam getgrnam getpwuid getgrgid \
 	getgrent setgrent endgrent getpwent setpwent endpwent \
 	gethostname gethostbyname getservbyname \
-	chroot fchroot uname sysinfo sync \
+	fchroot uname sysinfo sync \
         getgrnam_r getgrent_r getgrgid_r \
         getpwnam_r getpwent_r getpwuid_r \
 	getspnam_r innetgr utime _utime lutimes sleep usleep nanosleep \
diff --git a/src/signal_handler.c b/src/signal_handler.c
index dae00fb4d6..39dedacf3b 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -4111,6 +4111,7 @@ void f_create_process(INT32 args)
 #endif /* _sys_nsig */
       }
 
+#ifdef HAVE_CHROOT
       if(mchroot)
       {
 	if( chroot( mchroot ) )
@@ -4129,6 +4130,7 @@ void f_create_process(INT32 args)
 	  PROCERROR(PROCE_CHDIR, 1);
 	}
       }
+#endif
 
       if(tmp_cwd)
       {
-- 
GitLab