summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--m4/chown.m410
1 files changed, 9 insertions, 1 deletions
diff --git a/m4/chown.m4 b/m4/chown.m4
index 4ae19a953..1fb6203e9 100644
--- a/m4/chown.m4
+++ b/m4/chown.m4
@@ -17,6 +17,7 @@ AC_DEFUN(jm_FUNC_CHOWN,
AC_CACHE_CHECK([for working chown], jm_cv_func_working_chown,
[AC_TRY_RUN([
# include <sys/types.h>
+# include <stat.h>
# include <fcntl.h>
# ifdef HAVE_UNISTD_H
# include <unistd.h>
@@ -28,7 +29,14 @@ AC_DEFUN(jm_FUNC_CHOWN,
char *f = "conftestchown";
if (creat (f, 0600) < 0)
exit (1);
- exit (chown (f, (uid_t) -1, (gid_t) -1) == -1 ? 1 : 0);
+ if (stat (f, &before) < 0)
+ exit (1);
+ if (chown (f, (uid_t) -1, (gid_t) -1) == -1)
+ exit (1);
+ if (stat (f, &after) < 0)
+ exit (1);
+ exit ((before.st_uid == after.st_uid
+ && before.st_gid == after.st_gid) ? 0 : 1);
}
],
jm_cv_func_working_chown=yes,