mirror of https://github.com/Icinga/icinga2.git
Fix incorrect usage of readdir_r
refs #6821 Signed-off-by: Gunnar Beutner <gunnar.beutner@netways.de>
This commit is contained in:
parent
20fc8773b6
commit
46dbe5a4f5
|
@ -545,13 +545,15 @@ bool Utility::GlobRecursive(const String& path, const String& pattern, const boo
|
||||||
<< boost::errinfo_file_name(path));
|
<< boost::errinfo_file_name(path));
|
||||||
|
|
||||||
while (dirp) {
|
while (dirp) {
|
||||||
dirent ent, *pent;
|
dirent *pent;
|
||||||
|
|
||||||
if (readdir_r(dirp, &ent, &pent) < 0) {
|
errno = 0;
|
||||||
|
pent = readdir(dirp);
|
||||||
|
if (!pent && errno != 0) {
|
||||||
closedir(dirp);
|
closedir(dirp);
|
||||||
|
|
||||||
BOOST_THROW_EXCEPTION(posix_error()
|
BOOST_THROW_EXCEPTION(posix_error()
|
||||||
<< boost::errinfo_api_function("readdir_r")
|
<< boost::errinfo_api_function("readdir")
|
||||||
<< boost::errinfo_errno(errno)
|
<< boost::errinfo_errno(errno)
|
||||||
<< boost::errinfo_file_name(path));
|
<< boost::errinfo_file_name(path));
|
||||||
}
|
}
|
||||||
|
@ -559,10 +561,10 @@ bool Utility::GlobRecursive(const String& path, const String& pattern, const boo
|
||||||
if (!pent)
|
if (!pent)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (strcmp(ent.d_name, ".") == 0 || strcmp(ent.d_name, "..") == 0)
|
if (strcmp(pent->d_name, ".") == 0 || strcmp(pent->d_name, "..") == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
String cpath = path + "/" + ent.d_name;
|
String cpath = path + "/" + pent->d_name;
|
||||||
|
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
|
|
||||||
|
@ -572,7 +574,7 @@ bool Utility::GlobRecursive(const String& path, const String& pattern, const boo
|
||||||
if (S_ISDIR(statbuf.st_mode))
|
if (S_ISDIR(statbuf.st_mode))
|
||||||
alldirs.push_back(cpath);
|
alldirs.push_back(cpath);
|
||||||
|
|
||||||
if (!Utility::Match(pattern, ent.d_name))
|
if (!Utility::Match(pattern, pent->d_name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (S_ISDIR(statbuf.st_mode) && (type & GlobDirectory))
|
if (S_ISDIR(statbuf.st_mode) && (type & GlobDirectory))
|
||||||
|
|
Loading…
Reference in New Issue