1. 16 5月, 2014 4 次提交
    • C
      util: fix memory leak in failure path of virCgroupKillRecursiveInternal · d18aa704
      Chen Hanxiao 提交于
      Don't leak keypath when we fail to kill a process
      Signed-off-by: NChen Hanxiao <chenhanxiao@cn.fujitsu.com>
      d18aa704
    • E
      maint: prefer enum over int for virstoragefile structs · b279e52f
      Eric Blake 提交于
      For internal structs, we might as well be type-safe and let the
      compiler help us with less typing required on our part (getting
      rid of casts is always nice).  In trying to use enums directly,
      I noticed two problems in virstoragefile.h that can't be fixed
      without more invasive refactoring: virStorageSource.format is
      used as more of a union of multiple enums in storage volume
      code (so it has to remain an int), and virStorageSourcePoolDef
      refers to pooltype whose enum is declared in src/conf, but where
      src/util can't pull in headers from src/conf.
      
      * src/util/virstoragefile.h (virStorageNetHostDef)
      (virStorageSourcePoolDef, virStorageSource): Use enums instead of
      int for fields of internal types.
      * src/qemu/qemu_command.c (qemuParseCommandLine): Cover all values.
      * src/conf/domain_conf.c (virDomainDiskSourceParse)
      (virDomainDiskSourceFormat): Simplify clients.
      * src/qemu/qemu_driver.c
      (qemuDomainSnapshotCreateSingleDiskActive)
      (qemuDomainSnapshotPrepareDiskExternalBackingInactive)
      (qemuDomainSnapshotPrepareDiskExternalOverlayActive)
      (qemuDomainSnapshotPrepareDiskInternal): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      b279e52f
    • E
      maint: shorten 'TypeType' function names · ab517818
      Eric Blake 提交于
      The VIR_ENUM_DECL/VIR_ENUM_IMPL helper macros already append 'Type'
      to the enum name being converted; it looks silly to have functions
      with 'TypeType' in their name.  Even though some of our enums have
      to have a 'Type' suffix, the corresponding string conversion
      functions do not.
      
      * src/conf/secret_conf.h (VIR_ENUM_DECL): Rename virSecretUsageType.
      * src/conf/storage_conf.h (VIR_ENUM_DECL): Rename
      virStoragePoolAuthType, virStoragePoolSourceAdapterType,
      virStoragePartedFsType.
      * src/conf/domain_conf.c (virDomainDiskDefParseXML)
      (virDomainFSDefParseXML, virDomainFSDefFormat): Update callers.
      * src/conf/secret_conf.c (virSecretDefParseUsage)
      (virSecretDefFormatUsage): Likewise.
      * src/conf/storage_conf.c (virStoragePoolDefParseAuth)
      (virStoragePoolDefParseSource, virStoragePoolSourceFormat):
      Likewise.
      * src/lxc/lxc_controller.c (virLXCControllerSetupLoopDevices):
      Likewise.
      * src/storage/storage_backend_disk.c
      (virStorageBackendDiskPartFormat): Likewise.
      * src/util/virstorageencryption.c (virStorageEncryptionSecretParse)
      (virStorageEncryptionSecretFormat): Likewise.
      * tools/virsh-secret.c (cmdSecretList): Likewise.
      * src/libvirt_private.syms (secret_conf.h, storage_conf.h): Export
      corrected names.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ab517818
    • E
      maint: use enum typedef for virstorageencryption.h · ea18f8b2
      Eric Blake 提交于
      Continuing the work of consistent enum cleanups; this time in
      virstorageencryption.h.
      
      * src/util/virstorageencryption.h (virStorageEncryptionFormat):
      Convert to typedef, renaming to avoid collision with function.
      (virStorageEncryptionSecret, virStorageEncryption): Directly use
      enums.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ea18f8b2
  2. 15 5月, 2014 1 次提交
  3. 06 5月, 2014 6 次提交
    • C
      virdbus: Make virDBusCall static · 709f2455
      Cole Robinson 提交于
      709f2455
    • C
      virerror: Fix an error message typo · 3e8699d3
      Cole Robinson 提交于
      3e8699d3
    • D
      LSN-2014-0003: Don't expand entities when parsing XML · d6b27d3e
      Daniel P. Berrange 提交于
      If the XML_PARSE_NOENT flag is passed to libxml2, then any
      entities in the input document will be fully expanded. This
      allows the user to read arbitrary files on the host machine
      by creating an entity pointing to a local file. Removing
      the XML_PARSE_NOENT flag means that any entities are left
      unchanged by the parser, or expanded to "" by the XPath
      APIs.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      d6b27d3e
    • J
      Fix build wihout macvtap or virtualport · c3f68823
      Ján Tomko 提交于
      Commit 1b14c449 broke the build on FreeBSD by changing
      the signature of a few functions without updating the
      corresponding stubs that are used when WITH_MACVTAP
      or WITH_VIRTUALPORT is not defined.
      c3f68823
    • J
      util: use typedefs for enums in "src/util/" directory · 1b14c449
      Julio Faracco 提交于
      In "src/util/" there are many enumeration (enum) declarations.
      Sometimes, it's better using a typedef for variable types,
      function types and other usages. Other enumeration will be
      changed to typedef's in the future.
      Signed-off-by: NJulio Faracco <jcfaracco@gmail.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      1b14c449
    • E
      conf: drop extra storage probe · fff74b27
      Eric Blake 提交于
      All callers of virStorageFileGetMetadataFromBuf were first calling
      virStorageFileProbeFormatFromBuf, to learn what format to pass in.
      But this function is already wired to do the exact same probe if
      the incoming format is VIR_STORAGE_FILE_AUTO, so it's simpler to
      just refactor the probing into the central function.
      
      * src/util/virstoragefile.h (virStorageFileGetMetadataFromBuf):
      Drop parameter.
      (virStorageFileProbeFormatFromBuf): Drop declaration.
      * src/util/virstoragefile.c (virStorageFileGetMetadataFromBuf):
      Do probe here instead of in callers.
      (virStorageFileProbeFormatFromBuf): Make static.
      * src/libvirt_private.syms (virstoragefile.h): Drop function.
      * src/storage/storage_backend_fs.c (virStorageBackendProbeTarget):
      Update caller.
      * src/storage/storage_backend_gluster.c
      (virStorageBackendGlusterRefreshVol): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      fff74b27
  4. 02 5月, 2014 3 次提交
    • E
      storage: reject negative indices · 5c05e2b1
      Eric Blake 提交于
      Commit f22b7899 stumbled across a difference between 32-bit and
      64-bit platforms when parsing "-1" as an int.  Now that we've
      fixed that difference, it's time to fix the testsuite.
      
      * src/util/virstoragefile.c (virStorageFileParseChainIndex):
      Require a positive index.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      5c05e2b1
    • E
      util: new stricter unsigned int parsing · 7b045c8c
      Eric Blake 提交于
      strtoul() is required to parse negative numbers as their
      twos-complement positive counterpart.  But sometimes we want
      to reject negative numbers.  Add new functions to do this.
      The 'p' suffix is a mnemonic for 'positive' (technically it
      also parses 0, but 'non-negative' doesn't lend itself to a
      nice one-letter suffix).
      
      * src/util/virstring.h (virStrToLong_uip, virStrToLong_ulp)
      (virStrToLong_ullp): New prototypes.
      * src/util/virstring.c (virStrToLong_uip, virStrToLong_ulp)
      (virStrToLong_ullp): New functions.
      * src/libvirt_private.syms (virstring.h): Export them.
      * tests/virstringtest.c (testStringToLong): Test them.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7b045c8c
    • E
      util: fix uint parsing on 64-bit platforms · f18c02ec
      Eric Blake 提交于
      Commit f22b7899 called to light a long-standing latent bug: the
      behavior of virStrToLong_ui was different on 32-bit platforms
      than on 64-bit platforms.  Curse you, C type promotion and
      narrowing rules, and strtoul specification.  POSIX says that for
      a 32-bit long, strtol handles only 2^32 values [LONG_MIN to
      LONG_MAX] while strtoul handles 2^33 - 1 values [-ULONG_MAX to
      ULONG_MAX] with twos-complement wraparound for negatives.  Thus,
      parsing -1 as unsigned long produces ULONG_MAX, rather than a
      range error.  We WANT[1] this same shortcut for turning -1 into
      UINT_MAX when parsing to int; and get it for free with 32-bit
      long.  But with 64-bit long, ULONG_MAX is outside the range
      of int and we were rejecting it as invalid; meanwhile, we were
      silently treating -18446744073709551615 as 1 even though it
      textually exceeds INT_MIN.  Too bad there's not a strtoui() in
      libc that does guaranteed parsing to int, regardless of the size
      of long.
      
      The bug has been latent since 2007, introduced by Jim Meyering
      in commit 5d254191 in the attempt to eradicate unsafe use of
      strto[u]l when parsing ints and longs.  How embarrassing that we
      are only discovering it now - so I'm adding a testsuite to ensure
      that it covers all the corner cases we care about.
      
      [1] Ideally, we really want the caller to be able to choose whether
      to allow negative numbers to wrap around to their 2s-complement
      counterpart, as in strtoul, or to force a stricter input range
      of [0 to UINT_MAX] by rejecting negative signs; this will be added
      in a later patch for all three int types.
      
      This patch is tested on both 32- and 64-bit; the enhanced
      virstringtest passes on both platforms, while virstoragetest now
      reliably fails on both platforms instead of just 32-bit platforms.
      That test will be fixed later.
      
      * src/util/virstring.c (virStrToLong_ui): Ensure same behavior
      regardless of platform long size.
      * tests/virstringtest.c (testStringToLong): New function.
      (mymain): Comprehensively test string to long parsing.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      f18c02ec
  5. 01 5月, 2014 1 次提交
  6. 30 4月, 2014 1 次提交
  7. 29 4月, 2014 5 次提交
    • E
      conf: avoid null deref during storage probe · c9679edc
      Eric Blake 提交于
      Commit 5c43e2e0 introduced a NULL deref if there is a failure
      in virStorageFileGetMetadataInternal.
      
      * src/util/virstoragefile.c (virStorageFileGetMetadataFromBuf):
      Fix error handling.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      c9679edc
    • D
      Don't use SO_REUSEADDR on Win32 platforms · 37697d82
      Daniel P. Berrange 提交于
      SO_REUSEADDR on Windows is actually akin to SO_REUSEPORT
      on Linux/BSD. ie it allows 2 apps to listen to the same
      port at once. Thus we must not set it on Win32 platforms
      
      See http://msdn.microsoft.com/en-us/library/windows/desktop/ms740621.aspxSigned-off-by: NDaniel P. Berrange <berrange@redhat.com>
      37697d82
    • E
      enforce sane readdir usage · eae00fb5
      Eric Blake 提交于
      Now that all clients have been adjusted, ensure that no future
      misuse of readdir is introduced into the code base.
      
      * cfg.mk (sc_prohibit_readdir): New rule.
      * src/util/virfile.c (virDirRead): Exempt the wrapper.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      eae00fb5
    • E
      util: use virDirRead API · ac1d42ac
      Eric Blake 提交于
      In making the conversion to the new API, I fixed a couple bugs:
      virSCSIDeviceGetSgName would leak memory if a directory
      unexpectedly contained multiple entries;
      virNetDevTapGetRealDeviceName could report a spurious error
      from a stale errno inherited before starting the readdir search.
      
      The decision on whether to store the result of virDirRead into
      a variable is based on whether the end of the loop falls through
      to cleanup code automatically.  In some cases, we have loops that
      are documented to return NULL on failure, and which raise an
      error on most failure paths but not in the case where the directory
      was unexpectedly empty; it may be worth a followup patch to
      explicitly report an error if readdir was successful but the
      directory was empty, so that a NULL return always has an error set.
      
      * src/util/vircgroup.c (virCgroupRemoveRecursively): Use new
      interface.
      (virCgroupKillRecursiveInternal, virCgroupSetOwner): Report
      readdir failures.
      * src/util/virfile.c (virFileLoopDeviceOpenSearch)
      (virFileNBDDeviceFindUnused, virFileDeleteTree): Use new
      interface.
      * src/util/virnetdevtap.c (virNetDevTapGetRealDeviceName):
      Properly check readdir errors.
      * src/util/virpci.c (virPCIDeviceIterDevices)
      (virPCIDeviceFileIterate, virPCIGetNetName): Report readdir
      failures.
      (virPCIDeviceAddressIOMMUGroupIterate): Use new interface.
      * src/util/virscsi.c (virSCSIDeviceGetSgName): Report readdir
      failures, and avoid memory leak.
      (virSCSIDeviceGetDevName): Report readdir failures.
      * src/util/virusb.c (virUSBDeviceSearch): Report readdir
      failures.
      * src/util/virutil.c (virGetFCHostNameByWWN)
      (virFindFCHostCapableVport): Report readdir failures.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ac1d42ac
    • N
      util: introduce virDirRead wrapper for readdir · 1ce2f1a4
      Natanael Copa 提交于
      Introduce a wrapper for readdir. This helps us make sure that we always
      set errno before calling readdir and it will make sure errors are
      properly logged.
      Signed-off-by: NNatanael Copa <ncopa@alpinelinux.org>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      1ce2f1a4
  8. 28 4月, 2014 1 次提交
  9. 25 4月, 2014 7 次提交
  10. 24 4月, 2014 11 次提交