1. 08 6月, 2011 16 次提交
    • E
      uuid: annotate non-null requirements · 208a6756
      Eric Blake 提交于
      Coverity already saw through a NULL dereference without these
      annotations, and gcc is still too puny to do good NULL analysis.
      But clang still benefits (and is easier to run than coverity),
      not to mention that adding this bit of documentation to the code
      may help future developers remember the constraints.
      
      * src/util/uuid.h (virGetHostUUID, virUUIDFormat): Document
      restrictions, for improved static analysis.
      208a6756
    • E
      debug: avoid null dereference on uuid lookup api · 2ed0c94d
      Eric Blake 提交于
      Detected by Coverity.  Commit a98d8f0d tried to make uuid debugging
      more robust, but missed some APIs.  And on the APIs that it visited,
      the mere act of preparing the debug message ends up dereferencing
      uuid prior to the null check.  Which means the APIs which are supposed
      to gracefully reject NULL arguments now end up with SIGSEGV.
      
      * src/libvirt.c (VIR_UUID_DEBUG): New macro.
      (virDomainLookupByUUID, virDomainLookupByUUIDString)
      (virNetworkLookupByUUID, virNetworkLookupByUUIDString)
      (virStoragePoolLookupByUUID, virStoragePoolLookupByUUIDString)
      (virSecretLookupByUUID, virSecretLookupByUUIDString)
      (virNWFilterLookupByUUID, virNWFilterLookupByUUIDString): Avoid
      null dereference.
      2ed0c94d
    • E
      python: avoid unlikely sign extension bug · f73198df
      Eric Blake 提交于
      Detected by Coverity.  cpumap was allocated with a value of
      (unsigned short)*(int), which is an int computation, and then
      promotes to size_t.  On a 64-bit platform, this fails if bit
      32 of the product is set (because of sign extension giving
      a HUGE value to malloc), even though a naive programmer would
      assume that since the first value is unsigned, the product
      is also unsigned and at most 4GB would be allocated.
      
      Won't bite in practice (the product should never be that large),
      but worth using the right types to begin with, so that we are
      now computing (unsigned short)*(size_t).
      
      * python/libvirt-override.c (libvirt_virDomainGetVcpus): Use
      correct type.
      f73198df
    • E
      build: silence coverity false positive · f876c30c
      Eric Blake 提交于
      Similar in nature to commit fd21ecfd, which shut up valgrind.
      
      sigaction is apparently a nasty interface for analyzer tools,
      at least for how many false positives it generates.
      
      * src/util/command.c (virExecWithHook): Initialize entire var, since
      coverity gripes about the (unused and non-standard) sa_restorer.
      f876c30c
    • E
      storage: avoid mishandling backing store > 2GB · 54456cc0
      Eric Blake 提交于
      Detected by Coverity.  The code was doing math on shifted unsigned
      char (which promotes to int), then promoting that to unsigned long
      during assignment to size.  On 64-bit platforms, this risks sign
      extending values of size > 2GiB.  Bug present since commit
      489fd3 (v0.6.0).
      
      I'm not sure if a specially-crafted bogus qcow2 image could
      exploit this, although it's probably not possible, since we
      were already checking for the computed results being within
      range of our fixed-size buffer.
      
      * src/util/storage_file.c (qcowXGetBackingStore): Avoid sign
      extension.
      54456cc0
    • E
      build: detect Coverity 5.3.0 · 28ea3bf3
      Eric Blake 提交于
      Coverity 5.3.0 still outputs lots of COVERITY_* variables, but no
      longer modifies COVERITY_BUILD_COMMAND in the environment.  Pick
      one that seems likely to stay around.
      
      * configure.ac (STATIC_ANALYSIS): Detect newer Coverity.
      28ea3bf3
    • O
      build: Fix typos in configure.ac · 31967cff
      Osier Yang 提交于
      31967cff
    • O
      virsh: Expose virDomainMigrateSetMaxSpeed API to virsh · b73f1f8d
      Osier Yang 提交于
      API virDomainMigrateSetMaxSpeed was introduced since 0.9.0, but
      no command in virsh yet.
      b73f1f8d
    • C
      lxc: Ensure container <init> actually exists · f9e8d6a0
      Cole Robinson 提交于
      Since we can't really get useful error reporting from virCommandExec since
      it needs to be the last thing we do.
      f9e8d6a0
    • C
      lxc: Verify root fs exists before mounting · 4fb706a5
      Cole Robinson 提交于
      Otherwise the following virFileMakePath will create the directory for
      us and fail further ahead, which probably isn't intended.
      4fb706a5
    • C
      lxc: controller: Improve container error reporting · a7e2dd1c
      Cole Robinson 提交于
      Add a handshake with the cloned container process to try and detect
      if it fails to start.
      a7e2dd1c
    • C
      lxc: Improve guest startup error reporting · 965a957c
      Cole Robinson 提交于
      Add a simple handshake with the lxc_controller process so we can detect
      process startup failures. We do this by adding a new --handshake cli arg
      to lxc_controller for passing a file descriptor. If the process fails to
      launch, we scrape all output from the logfile and report it to the user.
      965a957c
    • C
      lxc: Refactor controller command building · af1e180f
      Cole Robinson 提交于
      Arranges things similar to the qemu driver. Will allow us to more easily
      report command error output.
      af1e180f
    • C
      lxc: Don't report error in Wait/SendContinue · 6973594c
      Cole Robinson 提交于
      We will reuse these shortly, and each use should have a different error
      message.
      6973594c
    • C
      lxc: Drop container stdio as late as possible · eee1763c
      Cole Robinson 提交于
      Makes it more likely we get useful error output in the logs
      eee1763c
    • C
      Move virRun, virExec*, virFork to util/command · 02e86910
      Cole Robinson 提交于
      Seems reasonable to have all command wrappers in the same place
      
      v2:
          Dont move SetInherit
      
      v3:
          Comment spelling fix
          Adjust WARN0 comment
          Remove spurious #include movement
          Don't include sys/types.h
          Combine virExec enums
      Signed-off-by: NCole Robinson <crobinso@redhat.com>
      02e86910
  2. 07 6月, 2011 7 次提交
    • C
      util: Implement virRun as a wrapper around virCommand · 3c269b51
      Cole Robinson 提交于
      v2:
          Simplify command building
          Handle command building failure
      
      v3:
          Remove unneeded NULL check
      Signed-off-by: NCole Robinson <crobinso@redhat.com>
      3c269b51
    • C
      util: Remove unused virExec wrapper · d886ed95
      Cole Robinson 提交于
      v3:
          Remove obsolete comment
      Signed-off-by: NCole Robinson <crobinso@redhat.com>
      d886ed95
    • C
      qemu: Convert virExec usage to virCommand · 1ba75cf9
      Cole Robinson 提交于
      v2:
          Have virCommand cleanup intermediate process for us
      
      v3:
          Preserve original FD closing behavior
      Signed-off-by: NCole Robinson <crobinso@redhat.com>
      1ba75cf9
    • M
      esx: Remove duplicated invalid-argument checks · 0068b58c
      Matthias Bolte 提交于
      Those checks are already performed at the public API level.
      0068b58c
    • O
      docs: Add doc for video element · 99c8a5c8
      Osier Yang 提交于
      For backwards compatibility, if no <video> is set but there is a
      <graphics> tag, then we add a default <video> according to the
      guest type. Add docs to tell the user about this to not make
      them confused. Especially if they remove the video (such as via
      "virsh edit"), it will be surprised for them to see the video
      element is still in domain XML.
      99c8a5c8
    • O
      Use VIR_USE_CPU instead of new wheel · ebf6b11a
      Osier Yang 提交于
      ebf6b11a
    • M
      Avoid virGetVersion failure on specific driver support configurations · b10bca09
      Matthias Bolte 提交于
      virGetVersion itself doesn't take a virConnectPtr, but in order to obtain
      the hypervisor version against which libvirt was compiled it is used in
      combination with virConnectGetType like this:
      
      hvType = virConnectGetType(conn)
      virGetVersion(&libVer, hvType, &typeVer)
      
      When virConnectGetType is called on a remote connection then the remote
      driver returns the type of the underlying driver on the server side, for
      example QEMU. Then virGetVersion compares hvType to a set of strings that
      depend on configure options and returns LIBVIR_VERSION_NUMBER in most
      cases. Now this fails in case libvirt on the client side is just compiled
      with the remote driver enabled only and the server side has the actual
      driver such as the QEMU driver. It just happens to work when the actual
      driver is enabled on client and server side. But that's not always true.
      I noticed this on FreeBSD:
      
      freebsd# virsh -c qemu+tcp://192.168.178.22/system version
      Compiled against library: libvir 0.9.2
      error: failed to get the library version
      error: this function is not supported by the connection driver: virGetVersion
      
      This is not FreeBSD specific, happens on Windows as well due to the
      similar driver support configuration. The problem is that virConnectGetType
      returns QEMU, but virGetVersion on the client side only accepts Remote
      as hvType due to all other drivers being disabled on the client side.
      
      Daniel P. Berrange suggested to get rid of all the conditional code in
      virGetVersion, ignoring the hvType and always setting typeVer to
      LIBVIR_VERSION_NUMBER. virConnectGetVersion is supposed to be used to
      obtain the hypervisor version.
      b10bca09
  3. 06 6月, 2011 4 次提交
  4. 05 6月, 2011 1 次提交
  5. 04 6月, 2011 7 次提交
    • D
      Don't raise an error if the migration cookie is NULL · a50f5f6f
      Daniel P. Berrange 提交于
      The v2 migration protocol doesn't use cookies, so we should not
      be raising an error if the cookie parameters are NULL.
      
      * src/qemu/qemu_migration.c: Don't raise error if cookie is NULL
      a50f5f6f
    • D
      Fix check of virKillProcess return status · a018c0b9
      Daniel P. Berrange 提交于
      The error code for virKillProcess is returned in the errno variable
      not the return value. THis mistake caused the logs to be filled with
      errors when shutting down QEMU processes
      
      * src/qemu/qemu_process.c: Fix process kill check.
      a018c0b9
    • M
      vbox: Fix version extraction on Windows for newer VirtualBox versions · eb2664cb
      Matthias Bolte 提交于
      VirtualBox 4.0.8 changed the registry key layout. Before the version
      number was in a Version key. Now the Version key contains %VER% and
      the actual version number is in VersionExt now.
      
      Move value lookup code into its own function: vboxLookupRegistryValue.
      eb2664cb
    • E
      API: consolidate common unreleased enums · 33d90baf
      Eric Blake 提交于
      This commit is safe precisely because there has been no release
      for any of the enum values being deleted (they were added post-0.9.1).
      
      After the 0.9.2 release, we can then take advantage of
      virDomainModificationImpact in more places.
      
      * include/libvirt/libvirt.h.in (virDomainModificationImpact): New
      enum.
      (virDomainSchedParameterFlags, virMemoryParamFlags): Delete, since
      these were never released, and the new enum works fine here.
      * src/libvirt.c	(virDomainGetMemoryParameters)
      (virDomainSetMemoryParameters)
      (virDomainGetSchedulerParametersFlags)
      (virDomainSetSchedulerParametersFlags): Update documentation.
      * src/qemu/qemu_driver.c (qemuDomainSetMemoryParameters)
      (qemuDomainGetMemoryParameters, qemuSetSchedulerParametersFlags)
      (qemuSetSchedulerParameters, qemuGetSchedulerParametersFlags)
      (qemuGetSchedulerParameters): Adjust clients.
      * tools/virsh.c (cmdSchedinfo, cmdMemtune): Likewise.
      Based on ideas by Daniel Veillard and Hu Tao.
      33d90baf
    • J
      qemu: Avoid use after free in qemuCaps parsing · aeed51f7
      Jiri Denemark 提交于
      aeed51f7
    • J
      virsh: Document nodeinfo output · 4e3a1c30
      Jiri Denemark 提交于
      4e3a1c30
    • L
      security driver: ignore EINVAL when chowning an image file · 62ed801c
      Laine Stump 提交于
      This fixes:
      
        https://bugzilla.redhat.com/show_bug.cgi?id=702044
        https://bugzilla.redhat.com/show_bug.cgi?id=709454
      
      Both of these complain of a failure to use an image file that resides
      on a read-only NFS volume. The function in the DAC security driver
      that chowns image files to the qemu user:group before using them
      already has special cases to ignore failure of chown on read-only file
      systems, and in a few other cases, but it hadn't been checking for
      EINVAL, which is what is returned if the qemu user doesn't even exist
      on the NFS server.
      
      Since the explanation of EINVAL in the chown man page almost exactly
      matches the log message already present for the case of EOPNOTSUPP,
      I've just added EINVAL to that same conditional.
      62ed801c
  6. 03 6月, 2011 5 次提交