1. 08 6月, 2018 2 次提交
  2. 04 5月, 2018 1 次提交
  3. 25 4月, 2018 1 次提交
  4. 22 3月, 2018 2 次提交
  5. 19 3月, 2018 1 次提交
    • C
      virt-aa-helper: resolve file symlinks · 77cd862f
      Christian Ehrhardt 提交于
      In a recent change b932ed69: "virt-aa-helper: resolve yet to be created
      paths" several cases with symlinks in paths were fixed, but it regressed
      cases where the file being last element of the path was the actual link.
      
      In the case of the last element being the symlink realpath can (and shall)
      be called on the full path that was passed.
      
      Examples would be zfs/lvm block devices like:
       <disk type='block' device='disk'>
          <driver name='qemu' type='raw'/>
          <source dev='/dev/mapper/testlvm-testvol1'/>
          <target dev='vdd' bus='virtio'/>
       </disk>
      With the target being:
       /dev/mapper/testlvm-testvol1 -> ../dm-0
      
      That currently is rendered as
       "/dev/mapper/testlvm-testvol1" rwk,
      but instead should be (and is with the fix):
       "/dev/dm-0" rwk,
      
      Fixes: b932ed69: "virt-aa-helper: resolve yet to be created paths"
      Fixes: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1756394Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      77cd862f
  6. 08 3月, 2018 1 次提交
    • C
      virt-aa-helper: resolve yet to be created paths · b932ed69
      Christian Ehrhardt 提交于
      In certain cases a xml contains paths that do not yet exist, but
      are valid as qemu will create them later on - for example
      vhostuser mode=server sockets.
      
      In any such cases so far the check to virFileExists failed and due to
      that the paths stayed non-resolved in regard to symlinks.
      
      But for apparmor those non-resolved rules are non functional as they
      are evaluated after resolving any symlinks.
      
      Therefore for non-existent files and partially non-existent paths
      resolve as much as possible to get valid rules.
      
      Example:
         <interface type='vhostuser'>
             <model type='virtio'/>
             <source type='unix' path='/var/run/symlinknet' mode='server'/>
         </interface>
      
      Got rendered as:
        "/var/run/symlinknet" rw,
      
      But correct with "/var/run" being a symlink to "/run" is:
        "/run/symlinknet" rw,
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      Acked-by: NMichal Privoznik <mprivozn@redhat.com>
      b932ed69
  7. 09 2月, 2018 1 次提交
    • D
      storage: move storage file backend framework into util directory · 064fec69
      Daniel P. Berrangé 提交于
      The QEMU driver loadable module needs to be able to resolve all ELF
      symbols it references against libvirt.so. Some of its symbols can only
      be resolved against the storage_driver.so loadable module which creates
      a hard dependancy between them. By moving the storage file backend
      framework into the util directory, this gets included directly in the
      libvirt.so library. The actual backend implementations are still done as
      loadable modules, so this doesn't re-add deps on gluster libraries.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      064fec69
  8. 06 2月, 2018 1 次提交
  9. 10 1月, 2018 1 次提交
  10. 27 10月, 2017 1 次提交
  11. 26 10月, 2017 1 次提交
    • C
      virt-aa-helper: grant locking permission on -f · 07fc5c9c
      Christian Ehrhardt 提交于
      Hot-adding disks does not parse the full XML to generate apparmor rules.
      Instead it uses -f <PATH> to append a generic rule for that file path.
      
      580cdaa7: "virt-aa-helper: locking disk files for qemu 2.10" implemented
      the qemu 2.10 requirement to allow locking on disks images that are part of
      the domain xml.
      
      But on attach-device a user will still trigger an apparmor deny by going
      through virt-aa-helper -f, to fix that add the lock "k" permission to the
      append file case of virt-aa-helper.
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      07fc5c9c
  12. 17 10月, 2017 1 次提交
    • P
      util: storagefile: Add helpers to check presence of backing store · 0a294a8e
      Peter Krempa 提交于
      Add helpers that will simplify checking if a backing file is valid or
      whether it has backing store. The helper virStorageSourceIsBacking
      returns true if the given virStorageSource is a valid backing store
      member. virStorageSourceHasBacking returns true if the virStorageSource
      has a backing store child.
      
      Adding these functions creates a central points for further refactors.
      0a294a8e
  13. 06 10月, 2017 3 次提交
    • C
      virt-aa-helper: put static rules in quotes · cbd60952
      Christian Ehrhardt 提交于
      To avoid any issues later on if paths ever change (unlikely but
      possible) and to match the style of other generated rules the paths
      of the static rules have to be quoted as well.
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      cbd60952
    • C
      virt-aa-helper: allow spaces in vm names · e79211ed
      Christian Ehrhardt 提交于
      libvirt allows spaces in vm names, there were issues in the past but it
      seems not removed so the assumption has to be that spaces are continuing
      to be allowed.
      
      Therefore virt-aa-helper should not reject spaces in vm names anymore if
      it is going to be refused causing issues then the parser or xml schema
      should do so.
      Apparmor rules are in quotes, so a space in a path based on the name works.
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      e79211ed
    • C
      virt-aa-helper: fix paths for usb hostdevs · 750e0844
      Christian Ehrhardt 提交于
      If users only specified vendor&product (the common case) then parsing
      the xml via virDomainHostdevSubsysUSBDefParseXML would only set these.
      Bus and Device would much later be added when the devices are prepared
      to be added.
      
      Due to that a hot-add of a usb hostdev works as the device is prepared
      and virt-aa-helper processes the new internal xml. But on an initial
      guest start at the time virt-aa-helper renders the apparmor rules the
      bus/device id's are not set yet:
      
      p ctl->def->hostdevs[0]->source.subsys.u.usb
      $12 = {autoAddress = false, bus = 0, device = 0, vendor = 1921, product
      = 21888}
      
      That causes rules to be wrong:
        "/dev/bus/usb/000/000" rw,
      
      The fix calls virHostdevFindUSBDevice after reading the XML from
      virt-aa-helper to only add apparmor rules for devices that could be found
      and now are fully known to be able to write the rule correctly.
      
      It uncondtionally sets virHostdevFindUSBDevice mandatory attribute as
      adding an apparmor rule for a device not found makes no sense no matter
      what startup policy it has set.
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      750e0844
  14. 19 9月, 2017 1 次提交
  15. 17 8月, 2017 2 次提交
    • C
      virt-aa-helper: locking loader/nvram for qemu 2.10 · 03fb4e3d
      Christian Ehrhardt 提交于
      Testing qemu-2.10-rc3 shows issues like:
        qemu-system-aarch64: -drive file=/home/ubuntu/vm-start-stop/vms/
        7936-0_CODE.fd,if=pflash,format=raw,unit=1: Failed to unlock byte 100
      
      There is an apparmor deny due to qemu now locking those files:
       apparmor="DENIED" operation="file_lock" [...]
       name="/home/ubuntu/vm-start-stop/vms/7936-0_CODE.fd"
       name="/var/lib/uvtool/libvirt/images/kvmguest-artful-normal.qcow"
       [...] comm="qemu-system-aarch64" requested_mask="k" denied_mask="k"
      
      The profile needs to allow locking for loader and nvram files via
      the locking (k) rule.
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      03fb4e3d
    • C
      virt-aa-helper: locking disk files for qemu 2.10 · 580cdaa7
      Christian Ehrhardt 提交于
      Testing qemu-2.10-rc2 shows issues like:
        qemu-system-x86_64: -drive file=/var/lib/uvtool/libvirt/images/kvmguest- \
        artful-normal.qcow,format=qcow2,if=none,id=drive-virtio-disk0:
        Failed to lock byte 100
      
      It seems the following qemu commit changed the needs for the backing
      image rules:
      
      (qemu) commit 244a5668106297378391b768e7288eb157616f64
      Author: Fam Zheng <famz@redhat.com>
          file-posix: Add image locking to perm operations
      
      The block appears as:
       apparmor="DENIED" operation="file_lock" [...]
       name="/var/lib/uvtool/libvirt/images/kvmguest-artful-normal.qcow"
       [...] comm="qemu-system-x86" requested_mask="k" denied_mask="k"
      
      With that qemu change in place the rules generated for the image
      and backing files need the allowance to also lock (k) the files.
      
      Disks are added via add_file_path and with this fix rules now get
      that permission, but no other rules are changed, example:
        -  "/var/lib/uvtool/libvirt/images/kvmguest-artful-normal-a2.qcow" rw,
        +  "/var/lib/uvtool/libvirt/images/kvmguest-artful-normal-a2.qcow" rwk
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      580cdaa7
  16. 14 8月, 2017 1 次提交
  17. 27 7月, 2017 1 次提交
  18. 19 7月, 2017 1 次提交
  19. 11 7月, 2017 1 次提交
  20. 16 6月, 2017 2 次提交
  21. 07 6月, 2017 1 次提交
  22. 05 6月, 2017 1 次提交
  23. 30 11月, 2016 1 次提交
    • C
      virt-aa-helper: fix parsing security labels by introducing VIR_DOMAIN_DEF_PARSE_SKIP_SECLABEL · dffdac06
      Christian Ehrhardt 提交于
      When virt-aa-helper parses xml content it can fail on security labels.
      
      It fails by requiring to parse active domain content on seclabels that
      are not yet filled in.
      
      Testcase with virt-aa-helper on a minimal xml:
       $ cat << EOF > /tmp/test.xml
      <domain type='kvm'>
          <name>test-seclabel</name>
          <uuid>12345678-9abc-def1-2345-6789abcdef00</uuid>
          <memory unit='KiB'>1</memory>
          <os><type arch='x86_64'>hvm</type></os>
          <seclabel type='dynamic' model='apparmor' relabel='yes'/>
          <seclabel type='dynamic' model='dac' relabel='yes'/>
      </domain>
      EOF
       $ /usr/lib/libvirt/virt-aa-helper -d -r -p 0 \
         -u libvirt-12345678-9abc-def1-2345-6789abcdef00 < /tmp/test.xml
      
      Current Result:
       virt-aa-helper: error: could not parse XML
       virt-aa-helper: error: could not get VM definition
      Expected Result is a valid apparmor profile
      Signed-off-by: NChristian Ehrhardt <christian.ehrhardt@canonical.com>
      Signed-off-by: NGuido Günther <agx@sigxcpu.org>
      dffdac06
  24. 22 10月, 2016 1 次提交
  25. 26 9月, 2016 1 次提交
  26. 08 9月, 2016 2 次提交
    • J
      security: Fixing wrong label in virt-aa-helper.c. · fe94ee5d
      Julio Faracco 提交于
      There is an issue with a wrong label inside vah_add_path().
      The compilation fails with the error:
      make[3]: Entering directory '/tmp/libvirt/src'
        CC       security/virt_aa_helper-virt-aa-helper.o
      security/virt-aa-helper.c: In function 'vah_add_path':
      security/virt-aa-helper.c:769:9: error: label 'clean' used but not defined
               goto clean;
      
      This patch moves 'clean' label to 'cleanup' label.
      Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
      fe94ee5d
    • R
      Avoid segfault in virt-aa-helper when handling read-only filesystems · b3c1bcb9
      Rufo Dogav 提交于
      This patch fixes a segfault in virt-aa-helper caused by attempting to
      modify a static string literal. It is triggered when a domain has a
      <filesystem> with type='mount' configured read-only and libvirt is
      using the AppArmor security driver for sVirt confinement. An "R" is
      passed into the function and converted to 'r'.
      b3c1bcb9
  27. 22 7月, 2016 1 次提交
  28. 19 7月, 2016 2 次提交
    • C
      virt-aa-helper: better write denials handling · cedd2ab2
      Cédric Bosdonnat 提交于
      Better fix replacing c726af2d: introducing an 'R' permission to
      add read rule, but no explicit deny write rule.
      cedd2ab2
    • J
      security: compilation error due to wrong parameter for vah_add_path(). · fc624d86
      Julio Faracco 提交于
      The commit da665fbd introduced virStorageSourcePtr inside the structure
      _virDomainFSDef. This is causing an error when libvirt is being compiled.
      
      make[3]: Entering directory `/media/julio/8d65c59c-6ade-4740-9cdc-38016a4cb8ae
      /home/julio/Desktop/virt/libvirt/src'
        CC       security/virt_aa_helper-virt-aa-helper.o
      security/virt-aa-helper.c: In function 'get_files':
      security/virt-aa-helper.c:1087:13: error: passing argument 2 of 'vah_add_path'
      from incompatible pointer type [-Werror]
                   if (vah_add_path(&buf, fs->src, "rw", true) != 0)
                   ^
      security/virt-aa-helper.c:732:1: note: expected 'const char *' but argument is
      of type 'virStorageSourcePtr'
       vah_add_path(virBufferPtr buf, const char *path, const char *perms, bool
      recursive)
       ^
      cc1: all warnings being treated as errors
      
      Adding the attribute "path" from virStorageSourcePtr fixes this issue.
      Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
      fc624d86
  29. 09 6月, 2016 2 次提交
    • P
      vnc: add support for listen type 'socket' · acc83afe
      Pavel Hrdina 提交于
      VNC graphics already supports sockets but only via 'socket' attribute.
      This patch coverts that attribute into listen type 'socket'.
      
      For backward compatibility we need to handle listen type 'socket' and 'socket'
      attribute properly to support old XMLs and new XMLs.  If both are provided they
      have to match, if only one of them is provided we need to be able to parse that
      configuration too.
      
      To not break migration back to old libvirt if the socket is provided by user we
      need to generate migratable XML without the listen element and use only 'socket'
      attribute.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      acc83afe
    • P
      graphics: introduce new listen type 'socket' · b6465e1a
      Pavel Hrdina 提交于
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      b6465e1a
  30. 07 6月, 2016 1 次提交
    • P
      conf: Add infrastructure for adding configuration validation · b394af16
      Peter Krempa 提交于
      Until now we weren't able to add checks that would reject configuration
      once accepted by the parser. This patch adds a new callback and
      infrastructure to add such checks. In this patch all the places where
      rejecting a now-invalid configuration wouldn't be a good idea are marked
      with a new parser flag.
      b394af16
  31. 25 5月, 2016 1 次提交