[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/3] curl: Add sslverify option
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 2/3] curl: Add sslverify option |
Date: |
Wed, 30 Apr 2014 17:32:32 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
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 <address@hidden>
> ---
> 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