|
|
a41c76 |
From 5e76dbcf3922074cbf708c3ffe8adc6e108bac76 Mon Sep 17 00:00:00 2001
|
|
|
a41c76 |
Message-Id: <5e76dbcf3922074cbf708c3ffe8adc6e108bac76@dist-git>
|
|
|
a41c76 |
From: Peter Krempa <pkrempa@redhat.com>
|
|
|
a41c76 |
Date: Mon, 16 Mar 2020 22:11:59 +0100
|
|
|
a41c76 |
Subject: [PATCH] qemuDomainValidateStorageSource: Validate new network storage
|
|
|
a41c76 |
parameters
|
|
|
a41c76 |
MIME-Version: 1.0
|
|
|
a41c76 |
Content-Type: text/plain; charset=UTF-8
|
|
|
a41c76 |
Content-Transfer-Encoding: 8bit
|
|
|
a41c76 |
|
|
|
a41c76 |
Ensure that the new fields are allowed only when -blockdev is used or
|
|
|
a41c76 |
when they are in the detected part of the backing chain where qemu will
|
|
|
a41c76 |
handle them internally.
|
|
|
a41c76 |
|
|
|
a41c76 |
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
|
a41c76 |
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
|
a41c76 |
(cherry picked from commit c1409e308f8e10f28ff4977309b2573a1a2d8763)
|
|
|
a41c76 |
https://bugzilla.redhat.com/show_bug.cgi?id=1804750
|
|
|
a41c76 |
Message-Id: <3b47d0ff8f492506588d6ddeda49d2e4e43cc5aa.1584391727.git.pkrempa@redhat.com>
|
|
|
a41c76 |
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
|
a41c76 |
---
|
|
|
a41c76 |
src/qemu/qemu_domain.c | 75 ++++++++++++++++++++++++++++++++++++++++++
|
|
|
a41c76 |
1 file changed, 75 insertions(+)
|
|
|
a41c76 |
|
|
|
a41c76 |
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
|
|
a41c76 |
index 65df463acc..2920e699f6 100644
|
|
|
a41c76 |
--- a/src/qemu/qemu_domain.c
|
|
|
a41c76 |
+++ b/src/qemu/qemu_domain.c
|
|
|
a41c76 |
@@ -6953,6 +6953,81 @@ qemuDomainValidateStorageSource(virStorageSourcePtr src,
|
|
|
a41c76 |
}
|
|
|
a41c76 |
}
|
|
|
a41c76 |
|
|
|
a41c76 |
+ if (src->sslverify != VIR_TRISTATE_BOOL_ABSENT) {
|
|
|
a41c76 |
+ if (actualType != VIR_STORAGE_TYPE_NETWORK ||
|
|
|
a41c76 |
+ (src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTPS &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_FTPS)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("ssl verification is supported only with HTTPS/FTPS protocol"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (!src->detected &&
|
|
|
a41c76 |
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("ssl verification setting is not supported by this QEMU binary"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (src->ncookies > 0) {
|
|
|
a41c76 |
+ if (actualType != VIR_STORAGE_TYPE_NETWORK ||
|
|
|
a41c76 |
+ (src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTPS &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTP)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("http cookies are supported only with HTTP(S) protocol"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (!src->detected &&
|
|
|
a41c76 |
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("http cookies are not supported by this QEMU binary"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (virStorageSourceNetCookiesValidate(src) < 0)
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (src->readahead > 0) {
|
|
|
a41c76 |
+ if (actualType != VIR_STORAGE_TYPE_NETWORK ||
|
|
|
a41c76 |
+ (src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTPS &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTP &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_FTP &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_FTPS)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("readaehad is supported only with HTTP(S)/FTP(s) protocols"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (!src->detected &&
|
|
|
a41c76 |
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("readahead setting is not supported with this QEMU binary"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (src->timeout > 0) {
|
|
|
a41c76 |
+ if (actualType != VIR_STORAGE_TYPE_NETWORK ||
|
|
|
a41c76 |
+ (src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTPS &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_HTTP &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_FTP &&
|
|
|
a41c76 |
+ src->protocol != VIR_STORAGE_NET_PROTOCOL_FTPS)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("timeout is supported only with HTTP(S)/FTP(s) protocols"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
+ if (!src->detected &&
|
|
|
a41c76 |
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV)) {
|
|
|
a41c76 |
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
|
a41c76 |
+ _("timeout setting is not supported with this QEMU binary"));
|
|
|
a41c76 |
+ return -1;
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
return 0;
|
|
|
a41c76 |
}
|
|
|
a41c76 |
|
|
|
a41c76 |
--
|
|
|
a41c76 |
2.25.1
|
|
|
a41c76 |
|