diff --git a/src/hugepages.c b/src/hugepages.c
index e7b98da47d62e8658eefda7424a83bcd0da0c2e9..ac9441d092ecc9227e977f9971a3c0d323c614c3 100644 (file)
--- a/src/hugepages.c
+++ b/src/hugepages.c
while ((result = readdir(dir)) != NULL) {
if (strncmp(result->d_name, hugepages_dir, sizeof(hugepages_dir)-1)) {
/* not node dir */
+ errno = 0;
continue;
}
e_info.d_name = result->d_name;
e_info.node = node;
walk_directory(path2, read_hugepage_entry, &e_info, 0);
+ errno = 0;
}
- closedir(dir);
+ /* Check if NULL return from readdir() was an error */
+ if (errno != 0) {
+ ERROR("%s: readdir failed", g_plugin_name);
+ closedir(dir);
+ return -1;
+ }
+ closedir(dir);
return 0;
}
}
errno = 0;
- if ((lim = pathconf(path, _PC_NAME_MAX)) == -1) {
+ if ((lim = pathconf(sys_node, _PC_NAME_MAX)) == -1) {
/* Limit not defined if errno == 0, otherwise error */
if (errno != 0) {
ERROR("%s: pathconf failed", g_plugin_name);
while ((result = readdir(dir)) != NULL) {
if (strncmp(result->d_name, node_string, sizeof(node_string)-1)) {
/* not node dir */
+ errno = 0;
continue;
}
ssnprintf(path, (size_t) lim, sys_node_hugepages, result->d_name);
read_syshugepages(path, result->d_name);
+ errno = 0;
}
- closedir(dir);
+ /* Check if NULL return from readdir() was an error */
+ if (errno != 0) {
+ ERROR("%s: readdir failed", g_plugin_name);
+ closedir(dir);
+ return -1;
+ }
+ closedir(dir);
return 0;
}