>From 71ff7e79369a4514a961fc5cf76593b254c32d4c Mon Sep 17 00:00:00 2001 From: Matt Wette Date: Sun, 22 Mar 2020 09:12:37 -0700 Subject: [PATCH] 2020-03-22 Matt Wette * configure.ac: Provide new option: --disable-tmpnam This is made available for installations that don't want to allow the insecure POSIX tmpname function. Use mkstemp! instead. * libguile/posix.c tmpnam is deprecated; and enabled by ENABLE_TMPNAM --- configure.ac | 8 ++++++++ libguile/posix.c | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/configure.ac b/configure.ac index 6198c7e..3e96094 100644 --- a/configure.ac +++ b/configure.ac @@ -166,6 +166,10 @@ AC_ARG_ENABLE(regex, [ --disable-regex omit regular expression interfaces],, enable_regex=yes) +AC_ARG_ENABLE(tmpnam, + AS_HELP_STRING([--disable-tmpnam],[omit POSIX tmpnam]),, + enable_tmpnam=yes) + AC_ARG_ENABLE([deprecated], AS_HELP_STRING([--disable-deprecated],[omit deprecated features])) @@ -909,6 +913,10 @@ if test "$enable_regex" = yes; then AC_DEFINE([ENABLE_REGEX], 1, [Define when regex support is enabled.]) fi +if test "$enable_tmpnam" = yes; then + AC_DEFINE([ENABLE_TMPNAM], 1, [Define when tmpnam support is enabled.]) +fi + AC_REPLACE_FUNCS([strerror memmove]) # Reasons for testing: diff --git a/libguile/posix.c b/libguile/posix.c index a1520ab..9b9b476 100644 --- a/libguile/posix.c +++ b/libguile/posix.c @@ -87,6 +87,10 @@ #include "vectors.h" #include "version.h" +#if (SCM_ENABLE_DEPRECATED == 1) +#include "deprecation.h" +#endif + #include "posix.h" #if HAVE_SYS_WAIT_H @@ -1588,6 +1592,8 @@ SCM_DEFINE (scm_environ, "environ", 0, 1, 0, } #undef FUNC_NAME +#if (SCM_ENABLE_DEPRECATED == 1) +#ifdef ENABLE_TMPNAM #ifdef L_tmpnam SCM_DEFINE (scm_tmpnam, "tmpnam", 0, 0, 0, @@ -1602,6 +1608,9 @@ SCM_DEFINE (scm_tmpnam, "tmpnam", 0, 0, 0, char name[L_tmpnam]; char *rv; + scm_c_issue_deprecation_warning + ("Use of tmpnam is deprecated. Use mkstemp! instead."); + SCM_SYSCALL (rv = tmpnam (name)); if (rv == NULL) /* not SCM_SYSERROR since errno probably not set. */ @@ -1610,6 +1619,8 @@ SCM_DEFINE (scm_tmpnam, "tmpnam", 0, 0, 0, } #undef FUNC_NAME +#endif +#endif #endif SCM_DEFINE (scm_tmpfile, "tmpfile", 0, 0, 0, -- 2.17.1