aboutsummaryrefslogtreecommitdiffstats
path: root/m4
diff options
context:
space:
mode:
authorPaul Eggert2013-08-04 09:56:56 -0700
committerPaul Eggert2013-08-04 09:56:56 -0700
commite0fdb6943066032db294720915c3bd644bf2bcd1 (patch)
tree0aa420b81dc0187e2efec3ff4fe3cf046ad1c598 /m4
parent484ab23924d39b3e26d54074fd659633e1660ef4 (diff)
downloademacs-e0fdb6943066032db294720915c3bd644bf2bcd1.tar.gz
emacs-e0fdb6943066032db294720915c3bd644bf2bcd1.zip
Fix some minor races in hosts lacking mkostemp.
Gnulib's emulation of mkostemp doesn't have races that Emacs's does. * configure.ac (mkostemp): Remove check for this function; gnulib does the check now. (mkstemp): Remove check for this no-longer-used function. * lib/mkostemp.c, lib/secure_getenv.c, lib/tempname.c, lib/tempname.h: * m4/mkostemp.m4, m4/secure_getenv.m4, m4/tempname.m4: New files, copied from Gnulib. * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate. * admin/merge-gnulib (GNULIB_MODULES): Add mkostemp. * lib-src/movemail.c (main): * lib-src/update-game-score.c (write_scores): Use mkostemp (which now works on all platforms, due to changes in the portability layer) rather than mktemp (which has a race) or mkstemp (which we no longer bother with). * src/callproc.c (create_temp_file): * src/filelock.c (create_lock_file): Assume mkostemp, since it's now provided by Gnulib. Fixes: debbugs:15015
Diffstat (limited to 'm4')
-rw-r--r--m4/gnulib-comp.m444
-rw-r--r--m4/mkostemp.m423
-rw-r--r--m4/secure_getenv.m425
-rw-r--r--m4/tempname.m419
4 files changed, 111 insertions, 0 deletions
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index d7062e862de..af9a9ca3ae0 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -89,6 +89,7 @@ AC_DEFUN([gl_EARLY],
89 # Code from module lstat: 89 # Code from module lstat:
90 # Code from module manywarnings: 90 # Code from module manywarnings:
91 # Code from module memrchr: 91 # Code from module memrchr:
92 # Code from module mkostemp:
92 # Code from module mktime: 93 # Code from module mktime:
93 # Code from module multiarch: 94 # Code from module multiarch:
94 # Code from module nocrash: 95 # Code from module nocrash:
@@ -102,6 +103,7 @@ AC_DEFUN([gl_EARLY],
102 # Code from module readlink: 103 # Code from module readlink:
103 # Code from module readlinkat: 104 # Code from module readlinkat:
104 # Code from module root-uid: 105 # Code from module root-uid:
106 # Code from module secure_getenv:
105 # Code from module sig2str: 107 # Code from module sig2str:
106 # Code from module signal-h: 108 # Code from module signal-h:
107 # Code from module snippet/_Noreturn: 109 # Code from module snippet/_Noreturn:
@@ -134,6 +136,7 @@ AC_DEFUN([gl_EARLY],
134 # Code from module sys_select: 136 # Code from module sys_select:
135 # Code from module sys_stat: 137 # Code from module sys_stat:
136 # Code from module sys_time: 138 # Code from module sys_time:
139 # Code from module tempname:
137 # Code from module time: 140 # Code from module time:
138 # Code from module time_r: 141 # Code from module time_r:
139 # Code from module timer-time: 142 # Code from module timer-time:
@@ -274,6 +277,13 @@ AC_DEFUN([gl_INIT],
274 gl_PREREQ_MEMRCHR 277 gl_PREREQ_MEMRCHR
275 fi 278 fi
276 gl_STRING_MODULE_INDICATOR([memrchr]) 279 gl_STRING_MODULE_INDICATOR([memrchr])
280 gl_FUNC_MKOSTEMP
281 if test $HAVE_MKOSTEMP = 0; then
282 AC_LIBOBJ([mkostemp])
283 gl_PREREQ_MKOSTEMP
284 fi
285 gl_MODULE_INDICATOR([mkostemp])
286 gl_STDLIB_MODULE_INDICATOR([mkostemp])
277 gl_FUNC_MKTIME 287 gl_FUNC_MKTIME
278 if test $REPLACE_MKTIME = 1; then 288 if test $REPLACE_MKTIME = 1; then
279 AC_LIBOBJ([mktime]) 289 AC_LIBOBJ([mktime])
@@ -381,9 +391,11 @@ AC_DEFUN([gl_INIT],
381 gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7=false 391 gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7=false
382 gl_gnulib_enabled_pathmax=false 392 gl_gnulib_enabled_pathmax=false
383 gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false 393 gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false
394 gl_gnulib_enabled_secure_getenv=false
384 gl_gnulib_enabled_stat=false 395 gl_gnulib_enabled_stat=false
385 gl_gnulib_enabled_strtoll=false 396 gl_gnulib_enabled_strtoll=false
386 gl_gnulib_enabled_strtoull=false 397 gl_gnulib_enabled_strtoull=false
398 gl_gnulib_enabled_tempname=false
387 gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false 399 gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false
388 func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b () 400 func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b ()
389 { 401 {
@@ -485,6 +497,18 @@ AC_DEFUN([gl_INIT],
485 gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=true 497 gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=true
486 fi 498 fi
487 } 499 }
500 func_gl_gnulib_m4code_secure_getenv ()
501 {
502 if ! $gl_gnulib_enabled_secure_getenv; then
503 gl_FUNC_SECURE_GETENV
504 if test $HAVE_SECURE_GETENV = 0; then
505 AC_LIBOBJ([secure_getenv])
506 gl_PREREQ_SECURE_GETENV
507 fi
508 gl_STDLIB_MODULE_INDICATOR([secure_getenv])
509 gl_gnulib_enabled_secure_getenv=true
510 fi
511 }
488 func_gl_gnulib_m4code_stat () 512 func_gl_gnulib_m4code_stat ()
489 { 513 {
490 if ! $gl_gnulib_enabled_stat; then 514 if ! $gl_gnulib_enabled_stat; then
@@ -527,6 +551,14 @@ AC_DEFUN([gl_INIT],
527 gl_gnulib_enabled_strtoull=true 551 gl_gnulib_enabled_strtoull=true
528 fi 552 fi
529 } 553 }
554 func_gl_gnulib_m4code_tempname ()
555 {
556 if ! $gl_gnulib_enabled_tempname; then
557 gl_FUNC_GEN_TEMPNAME
558 gl_gnulib_enabled_tempname=true
559 func_gl_gnulib_m4code_secure_getenv
560 fi
561 }
530 func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec () 562 func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec ()
531 { 563 {
532 if ! $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then 564 if ! $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then
@@ -569,6 +601,9 @@ AC_DEFUN([gl_INIT],
569 if test $REPLACE_LSTAT = 1; then 601 if test $REPLACE_LSTAT = 1; then
570 func_gl_gnulib_m4code_stat 602 func_gl_gnulib_m4code_stat
571 fi 603 fi
604 if test $HAVE_MKOSTEMP = 0; then
605 func_gl_gnulib_m4code_tempname
606 fi
572 if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then 607 if test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1; then
573 func_gl_gnulib_m4code_stat 608 func_gl_gnulib_m4code_stat
574 fi 609 fi
@@ -598,9 +633,11 @@ AC_DEFUN([gl_INIT],
598 AM_CONDITIONAL([gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7], [$gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7]) 633 AM_CONDITIONAL([gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7], [$gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7])
599 AM_CONDITIONAL([gl_GNULIB_ENABLED_pathmax], [$gl_gnulib_enabled_pathmax]) 634 AM_CONDITIONAL([gl_GNULIB_ENABLED_pathmax], [$gl_gnulib_enabled_pathmax])
600 AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], [$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c]) 635 AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], [$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c])
636 AM_CONDITIONAL([gl_GNULIB_ENABLED_secure_getenv], [$gl_gnulib_enabled_secure_getenv])
601 AM_CONDITIONAL([gl_GNULIB_ENABLED_stat], [$gl_gnulib_enabled_stat]) 637 AM_CONDITIONAL([gl_GNULIB_ENABLED_stat], [$gl_gnulib_enabled_stat])
602 AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll]) 638 AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll])
603 AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoull], [$gl_gnulib_enabled_strtoull]) 639 AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoull], [$gl_gnulib_enabled_strtoull])
640 AM_CONDITIONAL([gl_GNULIB_ENABLED_tempname], [$gl_gnulib_enabled_tempname])
604 AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], [$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec]) 641 AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], [$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec])
605 # End of code from modules 642 # End of code from modules
606 m4_ifval(gl_LIBSOURCES_LIST, [ 643 m4_ifval(gl_LIBSOURCES_LIST, [
@@ -806,6 +843,7 @@ AC_DEFUN([gl_FILE_LIST], [
806 lib/md5.c 843 lib/md5.c
807 lib/md5.h 844 lib/md5.h
808 lib/memrchr.c 845 lib/memrchr.c
846 lib/mkostemp.c
809 lib/mktime-internal.h 847 lib/mktime-internal.h
810 lib/mktime.c 848 lib/mktime.c
811 lib/openat-priv.h 849 lib/openat-priv.h
@@ -821,6 +859,7 @@ AC_DEFUN([gl_FILE_LIST], [
821 lib/readlink.c 859 lib/readlink.c
822 lib/readlinkat.c 860 lib/readlinkat.c
823 lib/root-uid.h 861 lib/root-uid.h
862 lib/secure_getenv.c
824 lib/sha1.c 863 lib/sha1.c
825 lib/sha1.h 864 lib/sha1.h
826 lib/sha256.c 865 lib/sha256.c
@@ -853,6 +892,8 @@ AC_DEFUN([gl_FILE_LIST], [
853 lib/sys_select.in.h 892 lib/sys_select.in.h
854 lib/sys_stat.in.h 893 lib/sys_stat.in.h
855 lib/sys_time.in.h 894 lib/sys_time.in.h
895 lib/tempname.c
896 lib/tempname.h
856 lib/time.in.h 897 lib/time.in.h
857 lib/time_r.c 898 lib/time_r.c
858 lib/timespec-add.c 899 lib/timespec-add.c
@@ -908,6 +949,7 @@ AC_DEFUN([gl_FILE_LIST], [
908 m4/manywarnings.m4 949 m4/manywarnings.m4
909 m4/md5.m4 950 m4/md5.m4
910 m4/memrchr.m4 951 m4/memrchr.m4
952 m4/mkostemp.m4
911 m4/mktime.m4 953 m4/mktime.m4
912 m4/multiarch.m4 954 m4/multiarch.m4
913 m4/nocrash.m4 955 m4/nocrash.m4
@@ -919,6 +961,7 @@ AC_DEFUN([gl_FILE_LIST], [
919 m4/putenv.m4 961 m4/putenv.m4
920 m4/readlink.m4 962 m4/readlink.m4
921 m4/readlinkat.m4 963 m4/readlinkat.m4
964 m4/secure_getenv.m4
922 m4/setenv.m4 965 m4/setenv.m4
923 m4/sha1.m4 966 m4/sha1.m4
924 m4/sha256.m4 967 m4/sha256.m4
@@ -948,6 +991,7 @@ AC_DEFUN([gl_FILE_LIST], [
948 m4/sys_socket_h.m4 991 m4/sys_socket_h.m4
949 m4/sys_stat_h.m4 992 m4/sys_stat_h.m4
950 m4/sys_time_h.m4 993 m4/sys_time_h.m4
994 m4/tempname.m4
951 m4/time_h.m4 995 m4/time_h.m4
952 m4/time_r.m4 996 m4/time_r.m4
953 m4/timer_time.m4 997 m4/timer_time.m4
diff --git a/m4/mkostemp.m4 b/m4/mkostemp.m4
new file mode 100644
index 00000000000..6d101eeda39
--- /dev/null
+++ b/m4/mkostemp.m4
@@ -0,0 +1,23 @@
1# mkostemp.m4 serial 2
2dnl Copyright (C) 2009-2013 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gl_FUNC_MKOSTEMP],
8[
9 AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
10
11 dnl Persuade glibc <stdlib.h> to declare mkostemp().
12 AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
13
14 AC_CHECK_FUNCS_ONCE([mkostemp])
15 if test $ac_cv_func_mkostemp != yes; then
16 HAVE_MKOSTEMP=0
17 fi
18])
19
20# Prerequisites of lib/mkostemp.c.
21AC_DEFUN([gl_PREREQ_MKOSTEMP],
22[
23])
diff --git a/m4/secure_getenv.m4 b/m4/secure_getenv.m4
new file mode 100644
index 00000000000..5da5298f669
--- /dev/null
+++ b/m4/secure_getenv.m4
@@ -0,0 +1,25 @@
1# Look up an environment variable more securely.
2dnl Copyright 2013 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gl_FUNC_SECURE_GETENV],
8[
9 dnl Persuade glibc <stdlib.h> to declare secure_getenv().
10 AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
11
12 AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
13 AC_CHECK_FUNCS_ONCE([secure_getenv])
14 if test $ac_cv_func_secure_getenv = no; then
15 HAVE_SECURE_GETENV=0
16 fi
17])
18
19# Prerequisites of lib/secure_getenv.c.
20AC_DEFUN([gl_PREREQ_SECURE_GETENV], [
21 AC_CHECK_FUNCS([__secure_getenv])
22 if test $ac_cv_func___secure_getenv = no; then
23 AC_CHECK_FUNCS([issetugid])
24 fi
25])
diff --git a/m4/tempname.m4 b/m4/tempname.m4
new file mode 100644
index 00000000000..a6e42dcea81
--- /dev/null
+++ b/m4/tempname.m4
@@ -0,0 +1,19 @@
1#serial 5
2
3# Copyright (C) 2006-2007, 2009-2013 Free Software Foundation, Inc.
4# This file is free software; the Free Software Foundation
5# gives unlimited permission to copy and/or distribute it,
6# with or without modifications, as long as this notice is preserved.
7
8# glibc provides __gen_tempname as a wrapper for mk[ds]temp. Expose
9# it as a public API, and provide it on systems that are lacking.
10AC_DEFUN([gl_FUNC_GEN_TEMPNAME],
11[
12 gl_PREREQ_TEMPNAME
13])
14
15# Prerequisites of lib/tempname.c.
16AC_DEFUN([gl_PREREQ_TEMPNAME],
17[
18 :
19])