From 7cecfba1396200490e14de1c5585aa9d5244e609 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Tue, 21 Jun 2016 17:23:41 +0200 Subject: [PATCH] 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. --- src/util/virfile.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/util/virfile.c b/src/util/virfile.c index ce8f7fd860..d6419964c9 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -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; } -- 2.47.2