Index: configure.ac =================================================================== --- configure.ac.orig +++ configure.ac @@ -58,7 +58,9 @@ dnl ==================================== AC_CONFIG_HEADERS(config.h) -AC_PROG_CC +AC_PROG_CC_STDC +AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE AC_PROG_INSTALL AC_PROG_LN_S AC_LIBTOOL_WIN32_DLL @@ -135,7 +137,7 @@ AC_TYPE_PID_T # Checks for library functions. AC_FUNC_VPRINTF AC_FUNC_MMAP -AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree posix_fadvise fstatvfs fstatfs]) +AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp mkostemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree posix_fadvise fstatvfs fstatfs]) # if test "x$ac_cv_func_fstatvfs" = "xyes"; then Index: src/fcatomic.c =================================================================== --- src/fcatomic.c.orig +++ src/fcatomic.c @@ -109,10 +109,14 @@ FcAtomicLock (FcAtomic *atomic) strcpy ((char *) atomic->tmp, (char *) atomic->file); strcat ((char *) atomic->tmp, TMP_NAME); +#ifdef HAVE_MKOSTEMP + fd = mkostemp ((char *) atomic->tmp, O_CLOEXEC); +#else fd = mkstemp ((char *) atomic->tmp); +#endif if (fd < 0) return FcFalse; - f = fdopen (fd, "w"); + f = fdopen (fd, "we"); if (!f) { close (fd); Index: src/fccache.c =================================================================== --- src/fccache.c.orig +++ src/fccache.c @@ -150,7 +150,7 @@ FcDirCacheOpenFile (const FcChar8 *cache if (FcStat (cache_file, file_stat) < 0) return -1; #endif - fd = open((char *) cache_file, O_RDONLY | O_BINARY); + fd = open((char *) cache_file, O_RDONLY | O_BINARY | O_CLOEXEC); if (fd < 0) return fd; #ifndef _WIN32 @@ -904,7 +904,7 @@ FcDirCacheWrite (FcCache *cache, FcConfi if (!FcAtomicLock (atomic)) goto bail3; - fd = open((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT | O_BINARY, 0666); + fd = open((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT | O_BINARY | O_CLOEXEC, 0666); if (fd == -1) goto bail4;