security: apparmor: Properly link with storage driver in helper program

The refactor to split up storage driver into modules broke the apparmor
helper program, since that did not initialize the storage driver
properly and thus detection of the backing chain could not work.

Register the storage driver backends explicitly. Unfortunately it's now
necessary to link with the full storage driver to satisfy dependencies
of the loadable modules.

Reviewed-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Reported-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Tested-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
This commit is contained in:
Peter Krempa 2017-07-18 09:43:41 +02:00
parent 8ae82e676a
commit 5e515b542d
2 changed files with 9 additions and 1 deletions

View File

@ -3281,7 +3281,7 @@ virt_aa_helper_LDADD = \
libvirt.la \
libvirt_conf.la \
libvirt_util.la \
libvirt_driver_storage_impl.la \
libvirt_driver_storage.la \
../gnulib/lib/libgnu.la
if WITH_DTRACE_PROBES
virt_aa_helper_LDADD += libvirt_probes.lo

View File

@ -56,6 +56,7 @@
#include "virgettext.h"
#include "storage/storage_source.h"
#include "storage/storage_backend.h"
#define VIR_FROM_THIS VIR_FROM_SECURITY
@ -926,6 +927,11 @@ get_files(vahControl * ctl)
goto cleanup;
}
if (virStorageBackendDriversRegister(false) < 0) {
vah_error(ctl, 0, _("failed to register storage driver backend"));
goto cleanup;
}
for (i = 0; i < ctl->def->ndisks; i++) {
virDomainDiskDefPtr disk = ctl->def->disks[i];
@ -1283,6 +1289,8 @@ main(int argc, char **argv)
exit(EXIT_FAILURE);
}
virFileActivateDirOverride(argv[0]);
/* Initialize the log system */
virLogSetFromEnv();