From 751e83501400fa62d3e9834da0cf91f2d145e1d2 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Sat, 1 May 2021 01:03:41 +0200
Subject: [PATCH] supersede: Fix crash when malloc() fails.

Found by GCC 11 '-fanalyzer'.

* lib/supersede.c (create_temp_file): Don't crash when malloc() fails.
---
 ChangeLog       | 6 ++++++
 lib/supersede.c | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index a110509f6e..cb2c68df68 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2021-04-30  Bruno Haible  <bruno@clisp.org>
+
+	supersede: Fix crash when malloc() fails.
+	Found by GCC 11 '-fanalyzer'.
+	* lib/supersede.c (create_temp_file): Don't crash when malloc() fails.
+
 2021-04-27  Paul Eggert  <eggert@cs.ucla.edu>
 
 	libc-config: fix include problem on older Debian
diff --git a/lib/supersede.c b/lib/supersede.c
index 7371e20e2b..61b4f04347 100644
--- a/lib/supersede.c
+++ b/lib/supersede.c
@@ -60,6 +60,8 @@ create_temp_file (char *canon_filename, int flags, mode_t mode,
   /* The temporary file needs to be in the same directory, otherwise the
      final rename may fail.  */
   char *temp_filename = (char *) malloc (canon_filename_length + 7 + 1);
+  if (temp_filename == NULL)
+    return -1;
   memcpy (temp_filename, canon_filename, canon_filename_length);
   memcpy (temp_filename + canon_filename_length, ".XXXXXX", 7 + 1);
 
-- 
2.39.5