Am 30.04.2014 um 16:20 hat Matthew Booth geschrieben: > This allows qemu to use images over https with a self-signed certificate. It > defaults to verifying the certificate. > > Signed-off-by: Matthew Booth <mbo...@redhat.com> > --- > block/curl.c | 33 +++++++++++++++++++++++++++++++++ > 1 file changed, 33 insertions(+) > > diff --git a/block/curl.c b/block/curl.c > index 4de6856..e427e52 100644 > --- a/block/curl.c > +++ b/block/curl.c > @@ -23,6 +23,7 @@ > */ > #include "qemu-common.h" > #include "block/block_int.h" > +#include "qapi/qmp/qbool.h" > #include <curl/curl.h> > > // #define DEBUG > @@ -54,6 +55,7 @@ > > #define CURL_BLOCK_OPT_URL "url" > #define CURL_BLOCK_OPT_READAHEAD "readahead" > +#define CURL_BLOCK_OPT_SSLVERIFY "sslverify" > > struct BDRVCURLState; > > @@ -91,6 +93,7 @@ typedef struct BDRVCURLState { > CURLState states[CURL_NUM_STATES]; > char *url; > size_t readahead_size; > + bool sslverify; > bool accept_range; > } BDRVCURLState; > > @@ -357,6 +360,7 @@ static CURLState *curl_init_state(BDRVCURLState *s) > return NULL; > } > curl_easy_setopt(state->curl, CURLOPT_URL, s->url); > + curl_easy_setopt(state->curl, CURLOPT_SSL_VERIFYPEER, s->sslverify); > curl_easy_setopt(state->curl, CURLOPT_TIMEOUT, 5); > curl_easy_setopt(state->curl, CURLOPT_WRITEFUNCTION, > (void *)curl_read_cb); > @@ -440,6 +444,27 @@ static void curl_parse_filename(const char *filename, > QDict *options, > *end = '\0'; > qdict_put(options, CURL_BLOCK_OPT_READAHEAD, > qstring_from_str(value)); > + } else if (opt_len == strlen(CURL_BLOCK_OPT_SSLVERIFY) && > + memcmp(opt_start, CURL_BLOCK_OPT_SSLVERIFY, > + opt_len) == 0) { > + /* This is redundant after the first iteration */ > + *end = '\0'; > + > + int sslverify; > + if (value_len == strlen("on") && > + memcmp(value, "on", value_len) == 0) { > + sslverify = 1; > + } else if (value_len == strlen("off") && > + memcmp(value, "off", value_len) == 0) {
Indentation is off here. Kevin