Skip '.' and '..' in virDirRead

All of the callers either skip these explicitly, skip all entries
starting with a dot or match the entry name against stricter patterns.
This commit is contained in:
Ján Tomko 2016-06-21 17:23:41 +02:00
parent a4e6f1eb9c
commit 7cecfba139

View File

@ -2758,14 +2758,17 @@ virFileRemove(const char *path,
*/
int virDirRead(DIR *dirp, struct dirent **ent, const char *name)
{
errno = 0;
*ent = readdir(dirp); /* exempt from syntax-check */
if (!*ent && errno) {
if (name)
virReportSystemError(errno, _("Unable to read directory '%s'"),
name);
return -1;
}
do {
errno = 0;
*ent = readdir(dirp); /* exempt from syntax-check */
if (!*ent && errno) {
if (name)
virReportSystemError(errno, _("Unable to read directory '%s'"),
name);
return -1;
}
} while (*ent && (STREQ((*ent)->d_name, ".") ||
STREQ((*ent)->d_name, "..")));
return !!*ent;
}