]> Savannah Git Hosting - gnulib.git/commitdiff
fts: fail gracefully when out of memory
authorChuanGang Jiang <jiangchuanganghw@outlook.com>
Mon, 27 Feb 2023 11:46:12 +0000 (11:46 +0000)
committerPádraig Brady <P@draigBrady.com>
Mon, 27 Feb 2023 11:49:30 +0000 (11:49 +0000)
* lib/fts.c (fts_read): Set errno==ENOMEM and return NULL
when setup_dir() fails, rather than hitting an assertion later.

ChangeLog
lib/fts.c

index ed886704d75329f6da98a1a6e24e228109363aa1..25610ee51b06f37370c42a0538d9fb3670589f4f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2023-02-27  ChuanGang Jiang  <jiangchuanganghw@outlook.com>
+
+       fts: fail gracefully when out of memory
+       * lib/fts.c (fts_read): Set errno==ENOMEM and return NULL
+       when setup_dir() fails, rather than hitting an assertion later.
+
 2023-02-26  Jim Meyering  <meyering@fb.com>
 
        announce-gen: spell OpenBSD with a capital "O"
index 78584b29022c8197c29f89f8050c10e3abae93db..794a4f75d79651a449b50bd46da2c86a269c15d4 100644 (file)
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -979,7 +979,11 @@ next:   tmp = p;
                         }
                         free_dir(sp);
                         fts_load(sp, p);
-                        setup_dir(sp);
+                        if (! setup_dir(sp)) {
+                                free_dir(sp);
+                                __set_errno (ENOMEM);
+                                return (NULL);
+                        }
                         goto check_for_dir;
                 }