From 0eb6839daece86bb0b13b7b3a64a82fda5363f0c Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Fri, 6 Nov 2020 19:16:39 -0800 Subject: [PATCH] GH-1269: Fix LogAscii::enable_leftover_log_rotation crash in bad dirs Running with that option enabled inside a bad directory (e.g. lack of permissions) crashed due to not checking for failure of opendir(). --- src/logging/writers/ascii/Ascii.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/logging/writers/ascii/Ascii.cc b/src/logging/writers/ascii/Ascii.cc index e417998596..5a04807b30 100644 --- a/src/logging/writers/ascii/Ascii.cc +++ b/src/logging/writers/ascii/Ascii.cc @@ -710,6 +710,21 @@ static std::vector find_leftover_logs() auto d = opendir("."); struct dirent* dp; + if ( ! d ) + { + char cwd[PATH_MAX]; + + if ( ! getcwd(cwd, sizeof(cwd)) ) + { + cwd[0] = '.'; + cwd[1] = '\0'; + } + + reporter->Error("failed to open directory '%s' in search of leftover logs: %s", + cwd, strerror(errno)); + return rval; + } + while ( (dp = readdir(d)) ) { if ( strncmp(dp->d_name, shadow_file_prefix, prefix_len) != 0 )