diff --git a/policycoreutils/setfiles/restore.c b/policycoreutils/setfiles/restore.c index 3a697f94..48ffcad0 100644 --- a/policycoreutils/setfiles/restore.c +++ b/policycoreutils/setfiles/restore.c @@ -368,19 +368,21 @@ int process_glob(char *name, int recurse) { int errors; memset(&globbuf, 0, sizeof(globbuf)); errors = glob(name, GLOB_TILDE | GLOB_PERIOD, NULL, &globbuf); - if (errors) - errors = process_one_realpath(name, recurse); - else { - for (i = 0; i < globbuf.gl_pathc; i++) { - int len = strlen(globbuf.gl_pathv[i]) -2; - if (len > 0 && strcmp(&globbuf.gl_pathv[i][len--], "/.") == 0) - continue; - if (len > 0 && strcmp(&globbuf.gl_pathv[i][len], "/..") == 0) - continue; - errors |= process_one_realpath(globbuf.gl_pathv[i], recurse); - } - globfree(&globbuf); + if (errors == GLOB_NOMATCH) + return 0; + + if (errors) + return errors; + + for (i = 0; i < globbuf.gl_pathc; i++) { + int len = strlen(globbuf.gl_pathv[i]) -2; + if (len > 0 && strcmp(&globbuf.gl_pathv[i][len--], "/.") == 0) + continue; + if (len > 0 && strcmp(&globbuf.gl_pathv[i][len], "/..") == 0) + continue; + errors |= process_one_realpath(globbuf.gl_pathv[i], recurse); } + globfree(&globbuf); return errors; }