On 6 Apr 2016, at 12:12, Daniel P. Berrange <berra...@redhat.com> wrote:
> Any programs which call the qcrypto APIs should ensure that > qcrypto_init() has been called before anything else which > can use crypto. Essentially this means right at the start > of the main method before initializing anything else. > > This is important because some versions of gnutls/gcrypt > require explicit initialization before use. > > Signed-off-by: Daniel P. Berrange <berra...@redhat.com> Reviewed-by: Alex Bligh <a...@alex.org.uk> Tested-by: Alex Bligh <a...@alex.org.uk> > --- > qemu-img.c | 6 ++++++ > qemu-io.c | 6 ++++++ > qemu-nbd.c | 7 +++++++ > 3 files changed, 19 insertions(+) > > diff --git a/qemu-img.c b/qemu-img.c > index 17c5cfd..1697762 100644 > --- a/qemu-img.c > +++ b/qemu-img.c > @@ -37,6 +37,7 @@ > #include "block/block_int.h" > #include "block/blockjob.h" > #include "block/qapi.h" > +#include "crypto/init.h" > #include <getopt.h> > > #define QEMU_IMG_VERSION "qemu-img version " QEMU_VERSION QEMU_PKGVERSION \ > @@ -3486,6 +3487,11 @@ int main(int argc, char **argv) > exit(EXIT_FAILURE); > } > > + if (qcrypto_init(&local_error) < 0) { > + error_reportf_err(local_error, "cannot initialize crypto: "); > + exit(1); > + } > + > module_call_init(MODULE_INIT_QOM); > bdrv_init(); > if (argc < 2) { > diff --git a/qemu-io.c b/qemu-io.c > index 0a738f1..288bba8 100644 > --- a/qemu-io.c > +++ b/qemu-io.c > @@ -23,6 +23,7 @@ > #include "sysemu/block-backend.h" > #include "block/block_int.h" > #include "trace/control.h" > +#include "crypto/init.h" > > #define CMD_NOFILE_OK 0x01 > > @@ -443,6 +444,11 @@ int main(int argc, char **argv) > progname = basename(argv[0]); > qemu_init_exec_dir(argv[0]); > > + if (qcrypto_init(&local_error) < 0) { > + error_reportf_err(local_error, "cannot initialize crypto: "); > + exit(1); > + } > + > module_call_init(MODULE_INIT_QOM); > qemu_add_opts(&qemu_object_opts); > bdrv_init(); > diff --git a/qemu-nbd.c b/qemu-nbd.c > index ca4a724..fa91ca3 100644 > --- a/qemu-nbd.c > +++ b/qemu-nbd.c > @@ -31,6 +31,7 @@ > #include "qapi/qmp/qstring.h" > #include "qom/object_interfaces.h" > #include "io/channel-socket.h" > +#include "crypto/init.h" > > #include <getopt.h> > #include <libgen.h> > @@ -518,6 +519,12 @@ int main(int argc, char **argv) > memset(&sa_sigterm, 0, sizeof(sa_sigterm)); > sa_sigterm.sa_handler = termsig_handler; > sigaction(SIGTERM, &sa_sigterm, NULL); > + > + if (qcrypto_init(&local_err) < 0) { > + error_reportf_err(local_err, "cannot initialize crypto: "); > + exit(1); > + } > + > module_call_init(MODULE_INIT_QOM); > qemu_add_opts(&qemu_object_opts); > qemu_init_exec_dir(argv[0]); > -- > 2.5.5 > > -- Alex Bligh