Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.
Go to file
Daniel P. Berrange 72b4139700 Replace hashing algorithm with murmurhash
Recent discussions have illustrated the potential for DOS attacks
with the hash table implementations used by most languages and
libraries.

   https://lwn.net/Articles/474912/

libvirt has an internal hash table impl, and uses hash tables for
a variety of purposes. The hash key generation code is pretty
simple and thus not strongly collision resistant.

This patch replaces the current libvirt hash key generator with
the (public domain) Murmurhash3 code. In addition every hash
table now gets a random seed value which is used to perturb the
hashing code. This should make it impossible to mount any
practical attack against libvirt hashing code.

* bootstrap.conf: Import bitrotate module
* src/Makefile.am: Add virhashcode.[ch]
* src/util/util.c: Make virRandom() return a fixed 32 bit
  integer value.
* src/util/hash.c, src/util/hash.h, src/util/cgroup.c: Replace
  hash code generation with a call to virHashCodeGen()
* src/util/virhashcode.h, src/util/virhashcode.c: Add a new
  virHashCodeGen() API using the Murmurhash3 algorithm.
2012-01-26 14:18:53 +00:00
.gnulib@dd6b2d751b build: fix bootstrap on fresh clone 2012-01-16 11:23:34 -07:00
daemon API: make declaration of _LAST enum values conditional 2012-01-20 16:05:51 -07:00
docs schema: Relax schema for domain name 2012-01-26 14:22:44 +01:00
examples Permission change for systemtap examples. 2012-01-17 15:42:01 -07:00
gnulib build: update to latest gnulib 2012-01-12 15:47:54 -07:00
include storage: Support different wiping algorithms 2012-01-26 13:59:30 +01:00
m4 build: silence some compiler warnings from gnulib 2012-01-19 13:14:10 -07:00
po Rename hash.h and hash.c to virhash.h and virhash.c 2012-01-26 14:11:13 +00:00
python API: make declaration of _LAST enum values conditional 2012-01-20 16:05:51 -07:00
src Replace hashing algorithm with murmurhash 2012-01-26 14:18:53 +00:00
tests Rename hash.h and hash.c to virhash.h and virhash.c 2012-01-26 14:11:13 +00:00
tools storage: Support different wiping algorithms 2012-01-26 13:59:30 +01:00
.dir-locals.el maint: let emacs avoid tabs in rng files 2011-08-13 08:56:26 -06:00
.gitignore Define keepalive protocol 2011-11-24 11:44:08 +01:00
.gitmodules
.mailmap maint: use mailmap, not AUTHORS, for secondary addresses 2011-11-11 08:56:19 -07:00
AUTHORS Allow custom metadata in domain configuration XML 2012-01-24 17:06:34 -07:00
autobuild.sh Disable python explicitly in mingw32 autobuild 2011-12-19 13:44:18 +00:00
autogen.sh build: allow for local gnulib diffs 2011-11-09 09:03:33 -07:00
bootstrap build: fix bootstrap on fresh clone 2012-01-16 11:23:34 -07:00
bootstrap.conf Replace hashing algorithm with murmurhash 2012-01-26 14:18:53 +00:00
cfg.mk build: simplify xmlFreeNode usage 2012-01-24 17:16:16 -07:00
ChangeLog-old generate ChangeLog from git logs into distribution tarball 2009-07-08 16:17:51 +02:00
configure.ac storage: Support different wiping algorithms 2012-01-26 13:59:30 +01:00
COPYING.LIB remove all trailing blank lines 2009-07-16 15:06:42 +02:00
HACKING Document STREQ_NULLABLE and STRNEQ_NULLABLE 2011-10-06 16:50:38 +02:00
libvirt.pc.in
libvirt.spec.in Remove dmidecode dependancy outside PC arches 2012-01-18 00:22:17 +08:00
Makefile.am maint: add missing copyright notices 2011-07-28 15:01:17 -06:00
Makefile.nonreentrant Ban use of all inet_* functions 2010-10-22 11:59:23 +01:00
mingw32-libvirt.spec.in spec: make it easier to autoreconf when building rpm 2011-12-08 09:49:50 -07:00
README
README-hacking maint: relax git minimum version 2010-02-24 14:29:27 -05:00
TODO Update todo list file to point at bugzilla/website 2010-10-13 16:45:26 +01:00

         LibVirt : simple API for virtualization

  Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes). It is free software
available under the GNU Lesser General Public License. Virtualization of
the Linux Operating System means the ability to run multiple instances of
Operating Systems concurrently on a single hardware system where the basic
resources are driven by a Linux instance. The library aim at providing
long term stable C API initially for the Xen paravirtualization but
should be able to integrate other virtualization mechanisms if needed.

Daniel Veillard <veillard@redhat.com>