]> 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)
committerBruno Haible <bruno@clisp.org>
Thu, 2 Mar 2023 20:06:05 +0000 (21:06 +0100)
* 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 0bf3744fce2924714ab349e6cf9aea7790ecfaf4..b5a2d27f2894d2474ecce016fad96b71ff41de78 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  Bruno Haible  <bruno@clisp.org>
 
        dfa: Avoid warnings with some Apple clang versions.
index 65a96e8addcb141709a2d431eeaaf5caeec82bb4..31de00e9c05897a4992bdabbc28836c11837bda4 100644 (file)
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -978,7 +978,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;
                 }