qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] crypto: fix initialization of crypto in tests


From: Daniel P. Berrange
Subject: Re: [Qemu-devel] [PATCH] crypto: fix initialization of crypto in tests
Date: Tue, 4 Oct 2016 17:39:58 +0100
User-agent: Mutt/1.7.0 (2016-08-17)

On Tue, Oct 04, 2016 at 04:21:03PM +0100, Dr. David Alan Gilbert wrote:
> * Daniel P. Berrange (address@hidden) wrote:
> > The test-io-channel-tls test was missing a call to qcrypto_init
> > and test-crypto-hash was initializing it multiple times,
> > 
> > Signed-off-by: Daniel P. Berrange <address@hidden>
> 
> I still seem to have a failure on rhel6 with this; but not everytime,
> maybe it's passing 10-20%ish ?
> 
> Dave
> 
> GTESTER tests/test-io-channel-tls
> test-io-channel-tls: ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == 
> ((ath_mutex_t) 0)' failed.
> GTester: last random seed: R02S804c19865af34376817b500c2a170214
> 
> #12 0x00007ffff66cd186 in ?? () from /usr/lib64/libgnutls.so.26
> #13 0x00007ffff66ca546 in _gnutls_recv_int () from /usr/lib64/libgnutls.so.26
> #14 0x00007ffff7f75f8d in qcrypto_tls_session_read (session=<value optimized 
> out>, buf=<value optimized out>,
>     len=<value optimized out>) at /root/hmp/qemu/crypto/tlssession.c:420
> #15 0x00007ffff7f6d5e7 in qio_channel_tls_readv (ioc=<value optimized out>, 
> iov=<value optimized out>, niov=250,
>     fds=<value optimized out>, nfds=<value optimized out>, 
> errp=0x7ffff837a850)
>     at /root/hmp/qemu/io/channel-tls.c:249
> #16 0x00007ffff7f686ca in test_io_thread_reader (opaque=0x7ffff837a800)
>     at /root/hmp/qemu/tests/io-channel-helpers.c:129
> #17 0x00007ffff7459374 in ?? () from /lib64/libglib-2.0.so.0
> #18 0x00007ffff5afbaa1 in start_thread () from /lib64/libpthread.so.0
> #19 0x00007ffff5848aad in clone () from /lib64/libc.so.6

Ok, I've found a second bug - we need to reverse the order of some
initialization calls in qcrypto_init() too. This patch here is still
needed, but i'll send a additional one too.

> 
> > ---
> >  tests/test-crypto-hash.c    | 12 ++----------
> >  tests/test-io-channel-tls.c |  3 +++
> >  2 files changed, 5 insertions(+), 10 deletions(-)
> > 
> > diff --git a/tests/test-crypto-hash.c b/tests/test-crypto-hash.c
> > index 42fc77a..214a9f7 100644
> > --- a/tests/test-crypto-hash.c
> > +++ b/tests/test-crypto-hash.c
> > @@ -89,8 +89,6 @@ static void test_hash_alloc(void)
> >  {
> >      size_t i;
> >  
> > -    g_assert(qcrypto_init(NULL) == 0);
> > -
> >      for (i = 0; i < G_N_ELEMENTS(expected_outputs) ; i++) {
> >          uint8_t *result = NULL;
> >          size_t resultlen = 0;
> > @@ -123,8 +121,6 @@ static void test_hash_prealloc(void)
> >  {
> >      size_t i;
> >  
> > -    g_assert(qcrypto_init(NULL) == 0);
> > -
> >      for (i = 0; i < G_N_ELEMENTS(expected_outputs) ; i++) {
> >          uint8_t *result;
> >          size_t resultlen;
> > @@ -161,8 +157,6 @@ static void test_hash_iov(void)
> >  {
> >      size_t i;
> >  
> > -    g_assert(qcrypto_init(NULL) == 0);
> > -
> >      for (i = 0; i < G_N_ELEMENTS(expected_outputs) ; i++) {
> >          struct iovec iov[3] = {
> >              { .iov_base = (char *)INPUT_TEXT1, .iov_len = 
> > strlen(INPUT_TEXT1) },
> > @@ -199,8 +193,6 @@ static void test_hash_digest(void)
> >  {
> >      size_t i;
> >  
> > -    g_assert(qcrypto_init(NULL) == 0);
> > -
> >      for (i = 0; i < G_N_ELEMENTS(expected_outputs) ; i++) {
> >          int ret;
> >          char *digest;
> > @@ -230,8 +222,6 @@ static void test_hash_base64(void)
> >  {
> >      size_t i;
> >  
> > -    g_assert(qcrypto_init(NULL) == 0);
> > -
> >      for (i = 0; i < G_N_ELEMENTS(expected_outputs) ; i++) {
> >          int ret;
> >          char *digest;
> > @@ -253,6 +243,8 @@ static void test_hash_base64(void)
> >  
> >  int main(int argc, char **argv)
> >  {
> > +    g_assert(qcrypto_init(NULL) == 0);
> > +
> >      g_test_init(&argc, &argv, NULL);
> >      g_test_add_func("/crypto/hash/iov", test_hash_iov);
> >      g_test_add_func("/crypto/hash/alloc", test_hash_alloc);
> > diff --git a/tests/test-io-channel-tls.c b/tests/test-io-channel-tls.c
> > index 3c361a7..bd3ae2b 100644
> > --- a/tests/test-io-channel-tls.c
> > +++ b/tests/test-io-channel-tls.c
> > @@ -27,6 +27,7 @@
> >  #include "io/channel-tls.h"
> >  #include "io/channel-socket.h"
> >  #include "io-channel-helpers.h"
> > +#include "crypto/init.h"
> >  #include "crypto/tlscredsx509.h"
> >  #include "qemu/acl.h"
> >  #include "qom/object_interfaces.h"
> > @@ -265,6 +266,8 @@ int main(int argc, char **argv)
> >  {
> >      int ret;
> >  
> > +    g_assert(qcrypto_init(NULL) == 0);
> > +
> >      module_call_init(MODULE_INIT_QOM);
> >      g_test_init(&argc, &argv, NULL);
> >      setenv("GNUTLS_FORCE_FIPS_MODE", "2", 1);
> > -- 
> > 2.7.4
> > 
> --
> Dr. David Alan Gilbert / address@hidden / Manchester, UK

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://entangle-photo.org       -o-    http://search.cpan.org/~danberr/ :|



reply via email to

[Prev in Thread] Current Thread [Next in Thread]