bug#29001: --disable-tmpnam

Matt Wette <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
"make" and "make check" succeeds on 3.0.1 / Ubuntu 18.04 / x86_64 with
1) --disable-tmpnam
2) --enable-tmpnam
3) neither

This updates libguile/posix.c and configure.ac to allow extra
configuration option --disable-tmpnam.   This is made available
for installations that don't want to allow the insecure tmpnam
function.  (Use mkstemp! instead.)

--- libguile/posix.c-orig    2020-03-18 16:55:09.349588085 -0700
+++ libguile/posix.c    2020-03-18 17:07:20.860142083 -0700
@@ -65,6 +65,7 @@

  #include "async.h"
  #include "bitvectors.h"
+#include "deprecation.h"
  #include "dynwind.h"
  #include "extensions.h"
  #include "feature.h"
@@ -1588,6 +1589,7 @@
  }
  #undef FUNC_NAME

+#ifdef ENABLE_TMPNAM
  #ifdef L_tmpnam

  SCM_DEFINE (scm_tmpnam, "tmpnam", 0, 0, 0,
@@ -1602,6 +1604,9 @@
    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.  */
@@ -1611,6 +1616,7 @@
  #undef FUNC_NAME

  #endif
+#endif

  SCM_DEFINE (scm_tmpfile, "tmpfile", 0, 0, 0,
              (void),
--- configure.ac-orig    2020-03-18 17:11:17.977427035 -0700
+++ configure.ac    2020-03-18 17:09:57.850334685 -0700
@@ -166,6 +166,10 @@
    [  --disable-regex         omit regular expression interfaces],,
    enable_regex=yes)

+AC_ARG_ENABLE(tmpnam,
+  [  --disable-tmpnam        omit POSIX tmpnam],,
+  enable_tmpnam=yes)
+
  AC_ARG_ENABLE([deprecated],
    AS_HELP_STRING([--disable-deprecated],[omit deprecated features]))

@@ -909,6 +913,10 @@
     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:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.