summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorR.J.V. Bertin <rjvbertin@gmail.com>2018-05-19 16:59:00 +0200
committerShawn Landden <slandden@gmail.com>2018-06-07 10:06:58 -0700
commit0229c29317f6526f2cf816e1e1f197cbee4c8746 (patch)
treed90d0f4e86d3ab59861ce4810edc2eed3f50acd5
parent572f6c2106d99e49c7b8bf85a3915d40ea092a60 (diff)
downloaddistcc-git-0229c29317f6526f2cf816e1e1f197cbee4c8746.tar.gz
handle systems that don't have fstatat() and family.
Committed from host : Portia.local
-rw-r--r--configure.ac2
-rw-r--r--src/compile.c4
-rw-r--r--src/serve.c2
3 files changed, 8 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 4e35fd6..0efbb2a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -383,6 +383,8 @@ AC_CHECK_FUNCS([strndup strsep mmap strlcpy])
AC_CHECK_FUNCS([getloadavg])
AC_CHECK_FUNCS([getline])
+AC_CHECK_FUNCS([fstatat],[],[AC_MSG_WARN([fstatat() not available; distccd will be slightly less secure])])
+
AC_CHECK_DECLS([snprintf, vsnprintf, vasprintf, asprintf, strndup])
AC_MSG_CHECKING([if mmap() supports MAP_FAILED])
diff --git a/src/compile.c b/src/compile.c
index a811c85..e45fba5 100644
--- a/src/compile.c
+++ b/src/compile.c
@@ -446,6 +446,7 @@ static int dcc_please_send_email_after_investigation(
return dcc_note_discrepancy(discrepancy_filename);
}
+#ifdef HAVE_FSTATAT
/* Re-write "cc" to directly call gcc or clang
*/
static void dcc_rewrite_generic_compiler(char **argv)
@@ -517,6 +518,7 @@ static void dcc_rewrite_generic_compiler(char **argv)
} else
return;
}
+#endif
/* Clang is a native cross-compiler, but needs to be told to what target it is
@@ -682,7 +684,9 @@ dcc_build_somewhere(char *argv[],
dcc_free_argv(argv);
argv = new_argv;
if (!getenv("DISTCC_NO_REWRITE_CROSS")) {
+#ifdef HAVE_FSTATAT
dcc_rewrite_generic_compiler(new_argv);
+#endif
dcc_add_clang_target(new_argv);
dcc_gcc_rewrite_fqn(new_argv);
}
diff --git a/src/serve.c b/src/serve.c
index e90a6e2..4af1458 100644
--- a/src/serve.c
+++ b/src/serve.c
@@ -370,6 +370,7 @@ static int dcc_check_compiler_masq(char *compiler_name)
**/
static int dcc_check_compiler_whitelist(char *_compiler_name)
{
+#ifdef HAVE_FSTATAT
char *compiler_name = _compiler_name;
int dirfd = -1;
@@ -399,6 +400,7 @@ static int dcc_check_compiler_whitelist(char *_compiler_name)
}
rs_trace("%s in /usr/lib/distcc whitelist", compiler_name);
+#endif
return 0;
}