From e76cdf475d666be9c782465e970e177ecad7a434 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Thu, 22 Nov 2012 15:05:03 -0600 Subject: [PATCH] Use readdir_r() instead of readdir() --- src/modify.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/modify.c b/src/modify.c index fbbf1bf2..bb5ab8c4 100644 --- a/src/modify.c +++ b/src/modify.c @@ -236,7 +236,7 @@ static int build_dentry_tree(struct dentry **root_ret, inode->attributes = FILE_ATTRIBUTE_DIRECTORY; DIR *dir; - struct dirent *p; + struct dirent entry, *result; struct dentry *child; dir = opendir(root_disk_path); @@ -257,20 +257,20 @@ static int build_dentry_tree(struct dentry **root_ret, * to any subdirectories. */ while (1) { errno = 0; - p = readdir(dir); - if (p == NULL) { - if (errno) { - ret = WIMLIB_ERR_READ; - ERROR_WITH_ERRNO("Error reading the " - "directory `%s'", - root_disk_path); - } + ret = readdir_r(dir, &entry, &result); + if (ret != 0) { + ret = WIMLIB_ERR_READ; + ERROR_WITH_ERRNO("Error reading the " + "directory `%s'", + root_disk_path); break; } - if (p->d_name[0] == '.' && (p->d_name[1] == '\0' - || (p->d_name[1] == '.' && p->d_name[2] == '\0'))) + if (result == NULL) + break; + if (result->d_name[0] == '.' && (result->d_name[1] == '\0' + || (result->d_name[1] == '.' && result->d_name[2] == '\0'))) continue; - strcpy(name + len + 1, p->d_name); + strcpy(name + len + 1, result->d_name); ret = build_dentry_tree(&child, name, lookup_table, NULL, config, add_image_flags, progress_func, NULL); -- 2.43.0