mirror of
https://github.com/SELinuxProject/selinux
synced 2025-01-30 01:12:51 +00:00
policycoreutils: setfiles: Fix process_glob to handle error situations properly
Rather than error when a glob does not match return success as this is not a problem. Signed-off-by: Eric Paris <eparis@redhat.com> Acked-by: Eric Paris <eparis@redhat.com>
This commit is contained in:
parent
a0e2e16878
commit
ddc5063c16
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user