From a9cd3ebf6968db76582461c34fc37b99636dfe82 Mon Sep 17 00:00:00 2001 From: ChuanGang Jiang Date: Mon, 27 Feb 2023 11:46:12 +0000 Subject: [PATCH] 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. --- ChangeLog | 6 ++++++ lib/fts.c | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 80d90c01e1..c7a6131486 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2023-02-27 ChuanGang Jiang + + 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 dfa: Avoid warnings with some Apple clang versions. diff --git a/lib/fts.c b/lib/fts.c index 34fe641640..0deafa4ff2 100644 --- a/lib/fts.c +++ b/lib/fts.c @@ -1,6 +1,6 @@ /* Traverse a file hierarchy. - Copyright (C) 2004-2022 Free Software Foundation, Inc. + Copyright (C) 2004-2023 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -980,7 +980,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; } -- 2.39.5