[libvirt] [PATCH] tests: qemu: mock master key generation
John Ferlan
jferlan at redhat.com
Wed May 11 11:53:07 UTC 2016
On 05/11/2016 07:36 AM, Peter Krempa wrote:
> The master key generation is using host state to get the random bytes.
> Currently it's not used so it doesn't break any tests, but it may become
> a problem in the future.
>
> Fix it by mocking qemuDomainGenerateRandomKey. This is possible after
> exporting it and switching to the dynamically linked qemu driver object
> for tests.
> ---
> This also makes the test not call any gnutls function which crashed certain
> gnutls versions as we did not initialize it (gnutls_global_init()). It may be
> also worth adding the call to virtTestMain so that tests don't run into that
> problem, but I'm not totaly persuaded that it's a good idea.
>
> src/qemu/qemu_domain.c | 2 +-
> src/qemu/qemu_domain.h | 2 ++
> tests/Makefile.am | 2 +-
> tests/qemuxml2argvmock.c | 21 +++++++++++++++++++++
> 4 files changed, 25 insertions(+), 2 deletions(-)
>
I think I addressed this in patch 2 of my series:
http://www.redhat.com/archives/libvir-list/2016-May/msg00444.html
John
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 3da0079..d955ed4 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -640,7 +640,7 @@ qemuDomainMasterKeyReadFile(qemuDomainObjPrivatePtr priv)
> *
> * Returns pointer memory containing key on success, NULL on failure
> */
> -static uint8_t *
> +uint8_t *
> qemuDomainGenerateRandomKey(size_t nbytes)
> {
> uint8_t *key;
> diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
> index c711188..b116949 100644
> --- a/src/qemu/qemu_domain.h
> +++ b/src/qemu/qemu_domain.h
> @@ -669,4 +669,6 @@ int qemuDomainSecretPrepare(virConnectPtr conn, virDomainObjPtr vm)
> int qemuDomainDefValidateDiskLunSource(const virStorageSource *src)
> ATTRIBUTE_NONNULL(1);
>
> +uint8_t *qemuDomainGenerateRandomKey(size_t nbytes);
> +
> #endif /* __QEMU_DOMAIN_H__ */
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> index 75efb90..ba14b8f 100644
> --- a/tests/Makefile.am
> +++ b/tests/Makefile.am
> @@ -561,7 +561,7 @@ libqemutestdriver_la_LIBADD = $(qemu_LDADDS)
> qemuxml2argvtest_SOURCES = \
> qemuxml2argvtest.c testutilsqemu.c testutilsqemu.h \
> testutils.c testutils.h
> -qemuxml2argvtest_LDADD = $(qemu_LDADDS) $(LDADDS) $(LIBXML_LIBS)
> +qemuxml2argvtest_LDADD = libqemutestdriver.la $(LDADDS) $(LIBXML_LIBS)
>
> qemuxml2argvmock_la_SOURCES = \
> qemuxml2argvmock.c
> diff --git a/tests/qemuxml2argvmock.c b/tests/qemuxml2argvmock.c
> index 1616eed..1bad3ae 100644
> --- a/tests/qemuxml2argvmock.c
> +++ b/tests/qemuxml2argvmock.c
> @@ -30,6 +30,10 @@
> #include "virstring.h"
> #include "virtpm.h"
> #include "virutil.h"
> +#include "viralloc.h"
> +
> +#include "qemu/qemu_domain.h"
> +
> #include <time.h>
> #include <unistd.h>
>
> @@ -145,3 +149,20 @@ virCommandPassFD(virCommandPtr cmd ATTRIBUTE_UNUSED,
> {
> /* nada */
> }
> +
> +
> +uint8_t *
> +qemuDomainGenerateRandomKey(size_t nbytes)
> +{
> + size_t i;
> + uint8_t seq = 0;
> + uint8_t *key;
> +
> + if (VIR_ALLOC_N(key, nbytes) < 0)
> + return NULL;
> +
> + for (i = 0; i < nbytes; i++)
> + key[i] = seq++;
> +
> + return key;
> +}
>
More information about the libvir-list
mailing list