diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 35423b5a74b98f8b5b92638700b659c6f3724b52..13f8a6a69e8c4fb2e55462ca3677716054758962 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -542,7 +541,6 @@ array_starts_with(const char *str, const char * const *arr, const long size) static int valid_path(const char *path, const bool readonly) { - struct stat sb; int npaths, opaths; const char * const restricted[] = { "/bin/", @@ -590,20 +588,8 @@ valid_path(const char *path, const bool readonly) if (STRNEQLEN(path, "/", 1)) return 1; - if (!virFileExists(path)) { + if (!virFileExists(path)) vah_warning(_("path does not exist, skipping file type checks")); - } else { - if (stat(path, &sb) == -1) - return -1; - - switch (sb.st_mode & S_IFMT) { - case S_IFSOCK: - return 1; - break; - default: - break; - } - } opaths = sizeof(override)/sizeof(*(override)); @@ -1101,6 +1087,18 @@ get_files(vahControl * ctl) } } + for (i = 0; i < ctl->def->nnets; i++) { + if (ctl->def->nets[i] && + ctl->def->nets[i]->type == VIR_DOMAIN_NET_TYPE_VHOSTUSER && + ctl->def->nets[i]->data.vhostuser) { + virDomainChrSourceDefPtr vhu = ctl->def->nets[i]->data.vhostuser; + + if (vah_add_file_chardev(&buf, vhu->data.nix.path, "rw", + vhu->type) != 0) + goto cleanup; + } + } + if (ctl->def->virtType == VIR_DOMAIN_VIRT_KVM) { for (i = 0; i < ctl->def->nnets; i++) { virDomainNetDefPtr net = ctl->def->nets[i];