From 11f9da227e8b31e1831522214f4e088857d787f1 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 29 Oct 2022 11:09:42 -0400 Subject: [PATCH] * src/posixos.c (os_anontmp): [SV 63287] Only fail O_TMPFILE once Reported by Dmitry Goncharov . --- src/posixos.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/posixos.c b/src/posixos.c index 48e8cf5c..63201b40 100644 --- a/src/posixos.c +++ b/src/posixos.c @@ -843,12 +843,18 @@ os_anontmp () int fd = -1; #ifdef O_TMPFILE - EINTRLOOP (fd, open (tdir, O_RDWR | O_TMPFILE | O_EXCL, 0600)); - if (fd >= 0) - return fd; + static unsigned int tmpfile_works = 1; - DB (DB_BASIC, (_("Cannot open '%s' with O_TMPFILE: %s.\n"), - tdir, strerror (errno))); + if (tmpfile_works) + { + EINTRLOOP (fd, open (tdir, O_RDWR | O_TMPFILE | O_EXCL, 0600)); + if (fd >= 0) + return fd; + + DB (DB_BASIC, (_("Cannot open '%s' with O_TMPFILE: %s.\n"), + tdir, strerror (errno))); + tmpfile_works = 0; + } #endif #if HAVE_DUP