vddk: Suppress new VDDK "phone home" messages

resolves: rhbz#2104720
vddk: Clearer error message when thumbprint is wrong
resolves: rhbz#1905772
Fix memory allocator=malloc,mlock=true (2044432)
This commit is contained in:
Richard W.M. Jones 2022-07-07 14:29:45 +01:00
parent 46c400fb00
commit 74f0e13c8d
24 changed files with 840 additions and 44 deletions

View File

@ -0,0 +1,302 @@
From 06d47e2efe1387a3873529c52a4c7c680ddeee22 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 7 Jul 2022 12:37:10 +0100
Subject: [PATCH] common/include: Add ARRAY_SIZE macro
This macro returns the length (in elements) at compile time of arrays
declared as:
int foo[] = { 1, 2, 3 };
ARRAY_SIZE(foo)
===> 3
It also attempts to detect some errors, such as using the macro with a
pointer instead of an array, with some ideas borrowed (not copied)
from Linux, QEMU and Stack Overflow questions.
Link: https://stackoverflow.com/questions/19452971/array-size-macro-that-rejects-pointers
Link: https://listman.redhat.com/archives/libguestfs/2022-July/029412.html
Thanks: Laszlo Ersek
(cherry picked from commit 0fa23df5cd5dc97a55857416ea81d5de6d867c18)
---
.gitignore | 1 +
common/include/Makefile.am | 7 +++
common/include/array-size.h | 41 +++++++++++++
common/include/compiler-macros.h | 60 +++++++++++++++++++
common/include/test-array-size.c | 100 +++++++++++++++++++++++++++++++
5 files changed, 209 insertions(+)
create mode 100644 common/include/array-size.h
create mode 100644 common/include/compiler-macros.h
create mode 100644 common/include/test-array-size.c
diff --git a/.gitignore b/.gitignore
index 10e1f99d..658fd4e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,6 +35,7 @@ plugins/*/*.3
/aclocal.m4
/autom4te.cache
/common/bitmap/test-bitmap
+/common/include/test-array-size
/common/include/test-ascii-ctype
/common/include/test-ascii-string
/common/include/test-byte-swapping
diff --git a/common/include/Makefile.am b/common/include/Makefile.am
index b73dd471..d3cf9408 100644
--- a/common/include/Makefile.am
+++ b/common/include/Makefile.am
@@ -34,10 +34,12 @@ include $(top_srcdir)/common-rules.mk
# These headers contain only common code shared by the core server,
# plugins and/or filters. They are not installed.
EXTRA_DIST = \
+ array-size.h \
ascii-ctype.h \
ascii-string.h \
byte-swapping.h \
checked-overflow.h \
+ compiler-macros.h \
exit-with-parent.h \
hexdigit.h \
isaligned.h \
@@ -55,6 +57,7 @@ EXTRA_DIST = \
# Unit tests.
TESTS = \
+ test-array-size \
test-ascii-ctype \
test-ascii-string \
test-byte-swapping \
@@ -69,6 +72,10 @@ TESTS = \
$(NULL)
check_PROGRAMS = $(TESTS)
+test_array_size_SOURCES = test-array-size.c array-size.h
+test_array_size_CPPFLAGS = -I$(srcdir)
+test_array_size_CFLAGS = $(WARNINGS_CFLAGS)
+
test_ascii_ctype_SOURCES = test-ascii-ctype.c ascii-ctype.h
test_ascii_ctype_CPPFLAGS = -I$(srcdir)
test_ascii_ctype_CFLAGS = $(WARNINGS_CFLAGS)
diff --git a/common/include/array-size.h b/common/include/array-size.h
new file mode 100644
index 00000000..b6d33dde
--- /dev/null
+++ b/common/include/array-size.h
@@ -0,0 +1,41 @@
+/* nbdkit
+ * Copyright (C) 2013-2022 Red Hat Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Red Hat nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef NBDKIT_ARRAY_SIZE_H
+#define NBDKIT_ARRAY_SIZE_H
+
+#include "compiler-macros.h"
+
+#define ARRAY_SIZE(a) \
+ ((sizeof (a) / sizeof ((a)[0])) + BUILD_BUG_ON_ZERO (!TYPE_IS_ARRAY(a)))
+
+#endif /* NBDKIT_ARRAY_SIZE_H */
diff --git a/common/include/compiler-macros.h b/common/include/compiler-macros.h
new file mode 100644
index 00000000..504e0085
--- /dev/null
+++ b/common/include/compiler-macros.h
@@ -0,0 +1,60 @@
+/* nbdkit
+ * Copyright (C) 2013-2022 Red Hat Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Red Hat nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef NBDKIT_COMPILER_MACROS_H
+#define NBDKIT_COMPILER_MACROS_H
+
+#ifndef __cplusplus
+
+/* This expression fails at compile time if 'expr' is true. It does
+ * this by constructing a struct which has an impossible
+ * (negative-sized) array.
+ *
+ * If 'expr' is false then we subtract the sizes of the two identical
+ * structures, returning zero.
+ */
+#define BUILD_BUG_ON_ZERO_SIZEOF(expr) \
+ (sizeof (struct { int _array_size_failed[(expr) ? -1 : 1]; }))
+#define BUILD_BUG_ON_ZERO(expr) \
+ (BUILD_BUG_ON_ZERO_SIZEOF(expr) - BUILD_BUG_ON_ZERO_SIZEOF(expr))
+
+#define TYPE_IS_ARRAY(a) \
+ (!__builtin_types_compatible_p (typeof (a), typeof (&(a)[0])))
+
+#else /* __cplusplus */
+
+#define BUILD_BUG_ON_ZERO(expr) 0
+#define TYPE_IS_ARRAY(a) 1
+
+#endif /* __cplusplus */
+
+#endif /* NBDKIT_COMPILER_MACROS_H */
diff --git a/common/include/test-array-size.c b/common/include/test-array-size.c
new file mode 100644
index 00000000..d77ba3c9
--- /dev/null
+++ b/common/include/test-array-size.c
@@ -0,0 +1,100 @@
+/* nbdkit
+ * Copyright (C) 2020-2022 Red Hat Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Red Hat nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#undef NDEBUG /* Keep test strong even for nbdkit built without assertions */
+#include <assert.h>
+
+#include "array-size.h"
+
+struct st { const char *s; int i; };
+
+static const char *s0[] = { };
+static const char *s1[] = { "a" };
+static const char *s3[] = { "a", "b", "c" };
+static const char *s4[4] = { "a", "b", "c", "d" };
+static int i0[] = { };
+static int i1[] = { 1 };
+static int i3[] = { 1, 2, 3 };
+static int i4[4] = { 1, 2, 3, 4 };
+static struct st st0[] = { };
+static struct st st1[] = { { "a", 1 } };
+static struct st st3[] = { { "a", 1 }, { "b", 2 }, { "c", 3 } };
+static struct st st4[4] = { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "d", 4 } };
+static struct st st4_0[4];
+
+int
+main (void)
+{
+ assert (ARRAY_SIZE (s0) == 0);
+ assert (ARRAY_SIZE (s1) == 1);
+ assert (ARRAY_SIZE (s3) == 3);
+ assert (ARRAY_SIZE (s4) == 4);
+ assert (ARRAY_SIZE (i0) == 0);
+ assert (ARRAY_SIZE (i1) == 1);
+ assert (ARRAY_SIZE (i3) == 3);
+ assert (ARRAY_SIZE (i4) == 4);
+ assert (ARRAY_SIZE (st0) == 0);
+ assert (ARRAY_SIZE (st1) == 1);
+ assert (ARRAY_SIZE (st3) == 3);
+ assert (ARRAY_SIZE (st4) == 4);
+ assert (ARRAY_SIZE (st4_0) == 4);
+
+#ifdef static_assert
+ static_assert (ARRAY_SIZE (s0) == 0, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (s1) == 1, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (s3) == 3, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (s4) == 4, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (i0) == 0, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (i1) == 1, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (i3) == 3, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (i4) == 4, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (st0) == 0, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (st1) == 1, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (st3) == 3, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (st4) == 4, "ARRAY_SIZE macro does not work");
+ static_assert (ARRAY_SIZE (st4_0) == 4, "ARRAY_SIZE macro does not work");
+#endif
+
+ /* You can uncomment this to test the negative case. Unfortunately
+ * it's difficult to automate this test.
+ */
+#if 0
+ int *p = i4;
+ assert (ARRAY_SIZE (p) == 4);
+#endif
+
+ exit (EXIT_SUCCESS);
+}
--
2.31.1

View File

@ -0,0 +1,342 @@
From a9cf21ef2e4770825d693e29f6b2d02d4291230e Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 7 Jul 2022 12:41:15 +0100
Subject: [PATCH] Use ARRAY_SIZE macro in various places in nbdkit
(cherry picked from commit 0a077b95b23c1d9e2ffbad5e58fc8ae46a4e547e)
---
common/bitmap/test-bitmap.c | 3 ++-
common/include/test-random.c | 5 ++---
common/utils/Makefile.am | 1 +
common/utils/test-quotes.c | 3 ++-
plugins/ocaml/Makefile.am | 1 +
plugins/ocaml/plugin.c | 14 ++++++++------
plugins/ruby/Makefile.am | 1 +
plugins/ruby/ruby.c | 5 +++--
plugins/ssh/ssh.c | 4 ++--
plugins/torrent/torrent.cpp | 5 ++---
server/fuzzer.c | 4 +++-
server/public.c | 3 ++-
server/test-public.c | 4 +++-
13 files changed, 32 insertions(+), 21 deletions(-)
diff --git a/common/bitmap/test-bitmap.c b/common/bitmap/test-bitmap.c
index 69e4d9ff..657cc9aa 100644
--- a/common/bitmap/test-bitmap.c
+++ b/common/bitmap/test-bitmap.c
@@ -45,6 +45,7 @@
#include <nbdkit-plugin.h>
+#include "array-size.h"
#include "bitmap.h"
static void
@@ -71,7 +72,7 @@ test (int bpb, int blksize)
exit (EXIT_FAILURE);
/* Set some bits at known block numbers. */
- for (j = 0; j < sizeof blks / sizeof blks[0]; ++j) {
+ for (j = 0; j < ARRAY_SIZE (blks); ++j) {
v = (j & 1) == 0 ? 1 : (1<<bpb) - 1;
bitmap_set_blk (&bm, blks[j], v);
}
diff --git a/common/include/test-random.c b/common/include/test-random.c
index 16553ee6..f8fe3804 100644
--- a/common/include/test-random.c
+++ b/common/include/test-random.c
@@ -37,6 +37,7 @@
#include <stdint.h>
#include <inttypes.h>
+#include "array-size.h"
#include "random.h"
/* This works by comparing the result to some known test vectors. It
@@ -160,8 +161,6 @@ UINT64_C(0xc6ca62fc772728b0),
} },
};
-#define nr_tests (sizeof tests / sizeof tests[0])
-
int
main (void)
{
@@ -169,7 +168,7 @@ main (void)
uint64_t r;
unsigned errors = 0;
- for (i = 0; i < nr_tests; ++i) {
+ for (i = 0; i < ARRAY_SIZE (tests); ++i) {
struct random_state state;
printf ("seed: %" PRIu64 "\n", tests[i].seed);
diff --git a/common/utils/Makefile.am b/common/utils/Makefile.am
index f8db853f..2c789015 100644
--- a/common/utils/Makefile.am
+++ b/common/utils/Makefile.am
@@ -105,6 +105,7 @@ test_quotes_SOURCES = test-quotes.c quote.c utils.h
test_quotes_CPPFLAGS = \
-I$(srcdir) \
-I$(top_srcdir)/common/replacements \
+ -I$(top_srcdir)/common/include \
$(NULL)
test_quotes_CFLAGS = $(WARNINGS_CFLAGS)
test_quotes_LDADD = \
diff --git a/common/utils/test-quotes.c b/common/utils/test-quotes.c
index bb825788..4960c7f8 100644
--- a/common/utils/test-quotes.c
+++ b/common/utils/test-quotes.c
@@ -41,6 +41,7 @@
#include <assert.h>
#include <stdbool.h>
+#include "array-size.h"
#include "utils.h"
#ifdef HAVE_OPEN_MEMSTREAM
@@ -93,7 +94,7 @@ main (void)
size_t i;
bool fail = false;
- for (i = 0; i < sizeof tests / sizeof tests[0]; i++) {
+ for (i = 0; i < ARRAY_SIZE (tests); i++) {
fail |= test (tests[i].orig, "shell_quote", shell_quote, tests[i].shell);
fail |= test (tests[i].orig, "uri_quote", uri_quote, tests[i].uri);
}
diff --git a/plugins/ocaml/Makefile.am b/plugins/ocaml/Makefile.am
index 0ee07f60..05624176 100644
--- a/plugins/ocaml/Makefile.am
+++ b/plugins/ocaml/Makefile.am
@@ -69,6 +69,7 @@ libnbdkitocaml_la_SOURCES = \
libnbdkitocaml_la_CPPFLAGS = \
-I$(OCAMLLIB) \
-I$(top_srcdir)/include \
+ -I$(top_srcdir)/common/include \
-DCAML_NAME_SPACE \
$(NULL)
diff --git a/plugins/ocaml/plugin.c b/plugins/ocaml/plugin.c
index 8dde45a0..2fe4e460 100644
--- a/plugins/ocaml/plugin.c
+++ b/plugins/ocaml/plugin.c
@@ -49,6 +49,8 @@
#define NBDKIT_API_VERSION 2
#include <nbdkit-plugin.h>
+#include "array-size.h"
+
#include "plugin.h"
/* This constructor runs when the plugin loads, and initializes the
@@ -637,7 +639,7 @@ pread_wrapper (void *h, void *buf, uint32_t count, uint64_t offset,
flagsv = Val_flags (flags);
value args[] = { *(value *) h, countv, offsetv, flagsv };
- rv = caml_callbackN_exn (pread_fn, sizeof args / sizeof args[0], args);
+ rv = caml_callbackN_exn (pread_fn, ARRAY_SIZE (args), args);
if (Is_exception_result (rv)) {
nbdkit_error ("%s", caml_format_exception (Extract_exception (rv)));
CAMLreturnT (int, -1);
@@ -666,7 +668,7 @@ pwrite_wrapper (void *h, const void *buf, uint32_t count, uint64_t offset,
flagsv = Val_flags (flags);
value args[] = { *(value *) h, strv, offsetv, flagsv };
- rv = caml_callbackN_exn (pwrite_fn, sizeof args / sizeof args[0], args);
+ rv = caml_callbackN_exn (pwrite_fn, ARRAY_SIZE (args), args);
if (Is_exception_result (rv)) {
nbdkit_error ("%s", caml_format_exception (Extract_exception (rv)));
CAMLreturnT (int, -1);
@@ -705,7 +707,7 @@ trim_wrapper (void *h, uint32_t count, uint64_t offset, uint32_t flags)
flagsv = Val_flags (flags);
value args[] = { *(value *) h, countv, offsetv, flagsv };
- rv = caml_callbackN_exn (trim_fn, sizeof args / sizeof args[0], args);
+ rv = caml_callbackN_exn (trim_fn, ARRAY_SIZE (args), args);
if (Is_exception_result (rv)) {
nbdkit_error ("%s", caml_format_exception (Extract_exception (rv)));
CAMLreturnT (int, -1);
@@ -726,7 +728,7 @@ zero_wrapper (void *h, uint32_t count, uint64_t offset, uint32_t flags)
flagsv = Val_flags (flags);
value args[] = { *(value *) h, countv, offsetv, flagsv };
- rv = caml_callbackN_exn (zero_fn, sizeof args / sizeof args[0], args);
+ rv = caml_callbackN_exn (zero_fn, ARRAY_SIZE (args), args);
if (Is_exception_result (rv)) {
nbdkit_error ("%s", caml_format_exception (Extract_exception (rv)));
CAMLreturnT (int, -1);
@@ -748,7 +750,7 @@ extents_wrapper (void *h, uint32_t count, uint64_t offset, uint32_t flags,
flagsv = Val_flags (flags);
value args[] = { *(value *) h, countv, offsetv, flagsv };
- rv = caml_callbackN_exn (extents_fn, sizeof args / sizeof args[0], args);
+ rv = caml_callbackN_exn (extents_fn, ARRAY_SIZE (args), args);
if (Is_exception_result (rv)) {
nbdkit_error ("%s", caml_format_exception (Extract_exception (rv)));
CAMLreturnT (int, -1);
@@ -788,7 +790,7 @@ cache_wrapper (void *h, uint32_t count, uint64_t offset, uint32_t flags)
flagsv = Val_flags (flags);
value args[] = { *(value *) h, countv, offsetv, flagsv };
- rv = caml_callbackN_exn (cache_fn, sizeof args / sizeof args[0], args);
+ rv = caml_callbackN_exn (cache_fn, ARRAY_SIZE (args), args);
if (Is_exception_result (rv)) {
nbdkit_error ("%s", caml_format_exception (Extract_exception (rv)));
CAMLreturnT (int, -1);
diff --git a/plugins/ruby/Makefile.am b/plugins/ruby/Makefile.am
index 456d03b1..2453ba05 100644
--- a/plugins/ruby/Makefile.am
+++ b/plugins/ruby/Makefile.am
@@ -47,6 +47,7 @@ nbdkit_ruby_plugin_la_SOURCES = \
nbdkit_ruby_plugin_la_CPPFLAGS = \
-I$(top_srcdir)/include \
+ -I$(top_srcdir)/common/include \
$(NULL)
nbdkit_ruby_plugin_la_CFLAGS = \
$(WARNINGS_CFLAGS) \
diff --git a/plugins/ruby/ruby.c b/plugins/ruby/ruby.c
index a038d8e8..6aaf03e4 100644
--- a/plugins/ruby/ruby.c
+++ b/plugins/ruby/ruby.c
@@ -44,6 +44,8 @@
#include <ruby/version.h>
#endif
+#include "array-size.h"
+
static VALUE nbdkit_module = Qnil;
static int last_error;
@@ -206,8 +208,7 @@ plugin_rb_config (const char *key, const char *value)
/* Load the Ruby script into the interpreter. */
const char *options[] = { "--", script };
- code = ruby_options (sizeof options / sizeof options[0],
- (char **) options);
+ code = ruby_options (ARRAY_SIZE (options), (char **) options);
/* Check if we managed to compile the Ruby script to code. */
if (!ruby_executable_node (code, &state)) {
diff --git a/plugins/ssh/ssh.c b/plugins/ssh/ssh.c
index 77cfcf6c..39d77e44 100644
--- a/plugins/ssh/ssh.c
+++ b/plugins/ssh/ssh.c
@@ -50,6 +50,7 @@
#include <nbdkit-plugin.h>
+#include "array-size.h"
#include "const-string-vector.h"
#include "minmax.h"
@@ -82,10 +83,9 @@ log_callback (int priority, const char *function, const char *message, void *vp)
{
const char *levels[] =
{ "none", "warning", "protocol", "packet", "function" };
- const size_t nr_levels = sizeof levels / sizeof levels[0];
const char *level;
- if (priority >= 0 && priority < nr_levels)
+ if (priority >= 0 && priority < ARRAY_SIZE (levels))
level = levels[priority];
else
level = "unknown";
diff --git a/plugins/torrent/torrent.cpp b/plugins/torrent/torrent.cpp
index d8cbda95..0dcf0d10 100644
--- a/plugins/torrent/torrent.cpp
+++ b/plugins/torrent/torrent.cpp
@@ -52,6 +52,7 @@
#include <libtorrent/torrent_info.hpp>
#include <libtorrent/version.hpp>
+#include "array-size.h"
extern "C" {
#include "cleanup.h"
};
@@ -101,8 +102,6 @@ static struct setting settings[] = {
{ "user-agent", "user_agent", pack.user_agent,
STRING },
};
-static const size_t nr_settings = sizeof settings / sizeof settings[0];
-
static libtorrent::alert_category_t alerts =
libtorrent::alert_category::error
| libtorrent::alert_category::piece_progress
@@ -221,7 +220,7 @@ torrent_config (const char *key, const char *value)
/* Settings. */
else {
- for (size_t i = 0; i < nr_settings; ++i) {
+ for (size_t i = 0; i < ARRAY_SIZE (settings); ++i) {
if (strcmp (key, settings[i].name) == 0 ||
(settings[i].altname && strcmp (key, settings[i].altname) == 0)) {
switch (settings[i].type) {
diff --git a/server/fuzzer.c b/server/fuzzer.c
index 4bbb0061..6c57e0f6 100644
--- a/server/fuzzer.c
+++ b/server/fuzzer.c
@@ -43,6 +43,8 @@
#include <sys/socket.h>
#include <sys/wait.h>
+#include "array-size.h"
+
#include "internal.h"
#ifndef ENABLE_LIBFUZZER
@@ -122,7 +124,7 @@ server (int sock)
"plugins/memory/.libs/nbdkit-memory-plugin." SOEXT, "1M",
NULL
};
- const int argc = sizeof argv / sizeof argv[0] - 1;
+ const int argc = ARRAY_SIZE (argv) - 1;
int saved_stdin, saved_stdout;
/* Make the socket appear as stdin and stdout of the process, saving
diff --git a/server/public.c b/server/public.c
index d9ed0d9c..a93041fe 100644
--- a/server/public.c
+++ b/server/public.c
@@ -70,6 +70,7 @@
#include <pthread_time.h>
#endif
+#include "array-size.h"
#include "ascii-ctype.h"
#include "ascii-string.h"
#include "get_current_dir_name.h"
@@ -712,7 +713,7 @@ nbdkit_nanosleep (unsigned sec, unsigned nsec)
*/
if (sigfillset(&all))
abort ();
- switch (ppoll (fds, sizeof fds / sizeof fds[0], &ts, &all)) {
+ switch (ppoll (fds, ARRAY_SIZE (fds), &ts, &all)) {
case -1:
assert (errno != EINTR);
nbdkit_error ("poll: %m");
diff --git a/server/test-public.c b/server/test-public.c
index 2e6a7d8f..1cb759d1 100644
--- a/server/test-public.c
+++ b/server/test-public.c
@@ -43,6 +43,8 @@
#include "internal.h"
+#include "array-size.h"
+
static bool error_flagged;
/* Stubs for linking against minimal source files, and for proving
@@ -167,7 +169,7 @@ test_nbdkit_parse_size (void)
{ "1E", 1024LL * 1024 * 1024 * 1024 * 1024 * 1024 },
};
- for (i = 0; i < sizeof pairs / sizeof pairs[0]; i++) {
+ for (i = 0; i < ARRAY_SIZE (pairs); i++) {
int64_t r;
error_flagged = false;
--
2.31.1

View File

@ -0,0 +1,78 @@
From 16fdeab315c865c2aeae1ebf896dc69d5ebdeffc Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 7 Jul 2022 08:57:36 +0100
Subject: [PATCH] vddk: Demote another "phone home" error message to debug
Reported-by: Ming Xie
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2104720
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
(cherry picked from commit afa8cc84392af26641b340c58b836ca879698a53)
---
plugins/vddk/vddk.c | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
index dbd3fdbe..35697bc1 100644
--- a/plugins/vddk/vddk.c
+++ b/plugins/vddk/vddk.c
@@ -49,6 +49,7 @@
#define NBDKIT_API_VERSION 2
#include <nbdkit-plugin.h>
+#include "array-size.h"
#include "cleanup.h"
#include "minmax.h"
#include "vector.h"
@@ -495,11 +496,25 @@ debug_function (const char *fs, va_list args)
nbdkit_debug ("%s", str);
}
+/* VDDK 7 added some useless error messages about their "phone home"
+ * system called CEIP which only panics users. Demote these to debug
+ * statements below.
+ *
+ * https://bugzilla.redhat.com/show_bug.cgi?id=1834267
+ * https://bugzilla.redhat.com/show_bug.cgi?id=2083617
+ * https://bugzilla.redhat.com/show_bug.cgi?id=2104720
+ */
+static const char * const demoted_errors[] = {
+ "Get CEIP status failed",
+ "VDDK_PhoneHome:",
+};
+
/* Turn error messages from the library into nbdkit_error. */
static void
error_function (const char *fs, va_list args)
{
CLEANUP_FREE char *str = NULL;
+ size_t i;
/* If the thread-local error_suppression flag is non-zero then we
* will suppress error messages from VDDK in this thread.
@@ -513,17 +528,12 @@ error_function (const char *fs, va_list args)
trim (str);
- /* VDDK 7 added some useless error messages about their "phone home"
- * system called CEIP which only panics users. Demote to a debug
- * statement.
- * https://bugzilla.redhat.com/show_bug.cgi?id=1834267
- * https://bugzilla.redhat.com/show_bug.cgi?id=2083617
- */
- if (strstr (str, "Get CEIP status failed") != NULL ||
- strstr (str, "VDDK_PhoneHome: Unable to load configuration "
- "options from ") != NULL) {
- nbdkit_debug ("%s", str);
- return;
+ /* See comment above about demoted errors. */
+ for (i = 0; i < ARRAY_SIZE (demoted_errors); ++i) {
+ if (strstr (str, demoted_errors[i]) != NULL) {
+ nbdkit_debug ("%s", str);
+ return;
+ }
}
nbdkit_error ("%s", str);
--
2.31.1

View File

@ -0,0 +1,64 @@
From 47d80b6020a739e9f005de24d4928721854da8dc Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 7 Jul 2022 14:06:25 +0100
Subject: [PATCH] common/include/test-array-size.c: Avoid Clang warning
On Clang with warn-error enabled:
test-array-size.c:44:20: error: variable 's0' is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration]
static const char *s0[] = { };
^
test-array-size.c:45:20: error: variable 's1' is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration]
static const char *s1[] = { "a" };
^
(etc)
Updates: commit 0fa23df5cd5dc97a55857416ea81d5de6d867c18
(cherry picked from commit 90f5dbf78bb56cb00d6b3c58fa0a9b390d50e25e)
---
common/include/test-array-size.c | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/common/include/test-array-size.c b/common/include/test-array-size.c
index d77ba3c9..1ce2142c 100644
--- a/common/include/test-array-size.c
+++ b/common/include/test-array-size.c
@@ -41,19 +41,21 @@
struct st { const char *s; int i; };
-static const char *s0[] = { };
-static const char *s1[] = { "a" };
-static const char *s3[] = { "a", "b", "c" };
-static const char *s4[4] = { "a", "b", "c", "d" };
-static int i0[] = { };
-static int i1[] = { 1 };
-static int i3[] = { 1, 2, 3 };
-static int i4[4] = { 1, 2, 3, 4 };
-static struct st st0[] = { };
-static struct st st1[] = { { "a", 1 } };
-static struct st st3[] = { { "a", 1 }, { "b", 2 }, { "c", 3 } };
-static struct st st4[4] = { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "d", 4 } };
-static struct st st4_0[4];
+static const char *s0[] __attribute__((__unused__)) = { };
+static const char *s1[] __attribute__((__unused__)) = { "a" };
+static const char *s3[] __attribute__((__unused__)) = { "a", "b", "c" };
+static const char *s4[4] __attribute__((__unused__)) = { "a", "b", "c", "d" };
+static int i0[] __attribute__((__unused__)) = { };
+static int i1[] __attribute__((__unused__)) = { 1 };
+static int i3[] __attribute__((__unused__)) = { 1, 2, 3 };
+static int i4[4] __attribute__((__unused__)) = { 1, 2, 3, 4 };
+static struct st st0[] __attribute__((__unused__)) = { };
+static struct st st1[] __attribute__((__unused__)) = { { "a", 1 } };
+static struct st st3[] __attribute__((__unused__)) =
+ { { "a", 1 }, { "b", 2 }, { "c", 3 } };
+static struct st st4[4] __attribute__((__unused__)) =
+ { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "d", 4 } };
+static struct st st4_0[4] __attribute__((__unused__));
int
main (void)
--
2.31.1

View File

@ -1,4 +1,4 @@
From 8ca4c61dfa5832e02a86e555d26ce4c31bac9a2a Mon Sep 17 00:00:00 2001
From d64bfe6d0ceec79ef9979b58a9e3bd179c91ba52 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 15 Apr 2022 12:08:37 +0100
Subject: [PATCH] ssh: Allow the remote file to be created
@ -67,10 +67,10 @@ index 3f401c15..2bc2c4a7 100644
Specify the name or IP address of the remote host.
diff --git a/plugins/ssh/ssh.c b/plugins/ssh/ssh.c
index 77cfcf6c..ac9cc230 100644
index 39d77e44..5e314cd7 100644
--- a/plugins/ssh/ssh.c
+++ b/plugins/ssh/ssh.c
@@ -44,12 +44,15 @@
@@ -44,6 +44,8 @@
#include <fcntl.h>
#include <sys/stat.h>
@ -79,14 +79,15 @@ index 77cfcf6c..ac9cc230 100644
#include <libssh/libssh.h>
#include <libssh/sftp.h>
#include <libssh/callbacks.h>
@@ -51,6 +53,7 @@
#include <nbdkit-plugin.h>
#include "array-size.h"
+#include "cleanup.h"
#include "const-string-vector.h"
#include "minmax.h"
@@ -63,6 +66,9 @@ static const char *known_hosts = NULL;
@@ -64,6 +67,9 @@ static const char *known_hosts = NULL;
static const_string_vector identities = empty_vector;
static uint32_t timeout = 0;
static bool compression = false;

View File

@ -1,4 +1,4 @@
From e38ee7546c883225ee003285c96dadc54ee4fa99 Mon Sep 17 00:00:00 2001
From 8dc8ecf751d6cca27ee08f58abb6faac3a3cda94 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 16 Apr 2022 18:39:13 +0100
Subject: [PATCH] readahead: Rewrite this filter so it prefetches using .cache

View File

@ -1,4 +1,4 @@
From d1ff7d65048ec2fc7c65a241a15d492e9f2cf718 Mon Sep 17 00:00:00 2001
From 3a52ccb52f6d6e2d1539a05981158fccfa23f2bd Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 21 Apr 2022 16:14:46 +0100
Subject: [PATCH] readahead: Fix test

View File

@ -1,4 +1,4 @@
From 9ec34835216f90a8d0d66c06f6b3395071b1c361 Mon Sep 17 00:00:00 2001
From 4fa66fba6699f8f2165b379979f59ab53c8b27bb Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 30 Apr 2022 12:35:07 +0100
Subject: [PATCH] New filter: luks

View File

@ -1,4 +1,4 @@
From 7b09b11d133ecd77a5b27c03b0525f66fd4745d5 Mon Sep 17 00:00:00 2001
From 2217ff117f800cecd6172b01a6833bd6398ebbc3 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sun, 8 May 2022 12:13:39 +0100
Subject: [PATCH] luks: Disable filter with old GnuTLS in Debian 10

View File

@ -1,4 +1,4 @@
From 90d4d72b776f880a47d507cd930c98dc7a82647d Mon Sep 17 00:00:00 2001
From fc8d93e08ff1798d6582a21d517557af4bcb79d9 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sun, 8 May 2022 12:30:09 +0100
Subject: [PATCH] luks: Various fixes for Clang

View File

@ -1,4 +1,4 @@
From 20a69e48a4e280190179d738b163f30945cb87bb Mon Sep 17 00:00:00 2001
From b6adfa1cef107c0adb06d280003b2b93f751e068 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sun, 8 May 2022 12:38:00 +0100
Subject: [PATCH] luks: Link with libcompat on Windows

View File

@ -1,4 +1,4 @@
From b329fbd928283ebdce9bb87e8625541beb0d34c9 Mon Sep 17 00:00:00 2001
From b37b8670455b28b0c337e550137ff562177a8769 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sun, 8 May 2022 16:13:13 +0100
Subject: [PATCH] luks: Refactor the filter

View File

@ -1,4 +1,4 @@
From 42f95095ffa8ccf28818eed906e35538503c4850 Mon Sep 17 00:00:00 2001
From ec35192381c45b8fdb954bd2eb10bba304f8dcca Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sun, 8 May 2022 18:05:45 +0100
Subject: [PATCH] tests: luks: Reduce time taken to run these tests

View File

@ -1,4 +1,4 @@
From e6ae2f736e25a1cdc97e4720588a723f5eb8c94b Mon Sep 17 00:00:00 2001
From ae9a67597a3a4e4a2df93d655265902ec41a189b Mon Sep 17 00:00:00 2001
From: Nikolaus Rath <Nikolaus@rath.org>
Date: Mon, 9 May 2022 10:04:30 +0100
Subject: [PATCH] Add nbdkit.parse_size() Python function.

View File

@ -1,4 +1,4 @@
From b2271b0d1b38f7fa77fffa8287e56ba94df62c78 Mon Sep 17 00:00:00 2001
From 0e71fee19dc2b239cb11f4d879a3276feca48f58 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 14 May 2022 13:47:19 +0100
Subject: [PATCH] cache: Fix cross-reference nbdkit-readahead-filter

View File

@ -1,4 +1,4 @@
From d2626f33f44877759a7d94630e3da8dfd31801b8 Mon Sep 17 00:00:00 2001
From f758d534f4b4f701707c25f128fdde30dfe60c2c Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 14 May 2022 14:00:16 +0100
Subject: [PATCH] curl: Don't document curl plugin + readahead filter

View File

@ -1,4 +1,4 @@
From e807d37b9006a5284f60c092a3dae0787a0b30ee Mon Sep 17 00:00:00 2001
From 9455de457dfced4ea247b0b5848e3d7fd748fb64 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 14 May 2022 13:46:56 +0100
Subject: [PATCH] New filter: scan

View File

@ -1,4 +1,4 @@
From 120bad475468b0a2e2aa2effbd1e51dd04621ce9 Mon Sep 17 00:00:00 2001
From fc1094e63f2c23667e4f04a0f8e513855242d845 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 14 May 2022 18:54:32 +0100
Subject: [PATCH] scan: Remove condition variable

View File

@ -1,4 +1,4 @@
From 542e0f33a76a232006b53569201a9b01fbcc36cb Mon Sep 17 00:00:00 2001
From 337d8bbe3f6f03631e2a4df05cf63d586d9eeeea Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 14 May 2022 19:02:48 +0100
Subject: [PATCH] scan: Small typographical fix in manual

View File

@ -1,4 +1,4 @@
From 66346327f756ba83c8e3ad402b8ff8f67371f335 Mon Sep 17 00:00:00 2001
From a11e0ecf22a4dff319fb679f67cb51594069e6df Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 14 May 2022 20:57:38 +0100
Subject: [PATCH] ssh: Don't reference readahead or scan filters from this

View File

@ -1,4 +1,4 @@
From 40b1785850d62bd1c5ed72121f0d505bb94173f5 Mon Sep 17 00:00:00 2001
From b892407cda17f6e13e93be65b04b25b10b628714 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Tue, 17 May 2022 13:20:17 +0100
Subject: [PATCH] scan: Fix bound so we don't try to prefetch beyond end of

View File

@ -1,4 +1,4 @@
From 3c200a0232a6f49a65e76ef84cb067a49fd70676 Mon Sep 17 00:00:00 2001
From 944a788490b88a7543052206c50de15f02b75206 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 10 Jun 2022 22:11:44 +0100
Subject: [PATCH] tests: Add a regression test for LUKS zeroing crash

View File

@ -1,4 +1,4 @@
From b352e5f705d408facfb9798ef30c58db64a477c4 Mon Sep 17 00:00:00 2001
From 97ce9ab67bc2e38461160e8c9183cc8d74fdc3a1 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 11 Jun 2022 12:34:02 +0100
Subject: [PATCH] rate: Allow burstiness to be controlled

View File

@ -53,7 +53,7 @@ ExclusiveArch: x86_64
Name: nbdkit
Version: 1.30.6
Release: 2%{?dist}
Release: 3%{?dist}
Summary: NBD server
License: BSD
@ -88,25 +88,29 @@ Patch0007: 0007-server-Display-kTLS-setting-in-debug-output.patch
Patch0008: 0008-server-Work-around-incorrect-include-in-gnutls-socke.patch
Patch0009: 0009-tests-test-parallel-sh.sh-Small-cleanups.patch
Patch0010: 0010-tests-test-parallel-sh.sh-Skip-test-under-valgrind-d.patch
Patch0011: 0011-ssh-Allow-the-remote-file-to-be-created.patch
Patch0012: 0012-readahead-Rewrite-this-filter-so-it-prefetches-using.patch
Patch0013: 0013-readahead-Fix-test.patch
Patch0014: 0014-New-filter-luks.patch
Patch0015: 0015-luks-Disable-filter-with-old-GnuTLS-in-Debian-10.patch
Patch0016: 0016-luks-Various-fixes-for-Clang.patch
Patch0017: 0017-luks-Link-with-libcompat-on-Windows.patch
Patch0018: 0018-luks-Refactor-the-filter.patch
Patch0019: 0019-tests-luks-Reduce-time-taken-to-run-these-tests.patch
Patch0020: 0020-Add-nbdkit.parse_size-Python-function.patch
Patch0021: 0021-cache-Fix-cross-reference-nbdkit-readahead-filter.patch
Patch0022: 0022-curl-Don-t-document-curl-plugin-readahead-filter.patch
Patch0023: 0023-New-filter-scan.patch
Patch0024: 0024-scan-Remove-condition-variable.patch
Patch0025: 0025-scan-Small-typographical-fix-in-manual.patch
Patch0026: 0026-ssh-Don-t-reference-readahead-or-scan-filters-from-t.patch
Patch0027: 0027-scan-Fix-bound-so-we-don-t-try-to-prefetch-beyond-en.patch
Patch0028: 0028-tests-Add-a-regression-test-for-LUKS-zeroing-crash.patch
Patch0029: 0029-rate-Allow-burstiness-to-be-controlled.patch
Patch0011: 0011-common-include-Add-ARRAY_SIZE-macro.patch
Patch0012: 0012-Use-ARRAY_SIZE-macro-in-various-places-in-nbdkit.patch
Patch0013: 0013-vddk-Demote-another-phone-home-error-message-to-debu.patch
Patch0014: 0014-common-include-test-array-size.c-Avoid-Clang-warning.patch
Patch0015: 0015-ssh-Allow-the-remote-file-to-be-created.patch
Patch0016: 0016-readahead-Rewrite-this-filter-so-it-prefetches-using.patch
Patch0017: 0017-readahead-Fix-test.patch
Patch0018: 0018-New-filter-luks.patch
Patch0019: 0019-luks-Disable-filter-with-old-GnuTLS-in-Debian-10.patch
Patch0020: 0020-luks-Various-fixes-for-Clang.patch
Patch0021: 0021-luks-Link-with-libcompat-on-Windows.patch
Patch0022: 0022-luks-Refactor-the-filter.patch
Patch0023: 0023-tests-luks-Reduce-time-taken-to-run-these-tests.patch
Patch0024: 0024-Add-nbdkit.parse_size-Python-function.patch
Patch0025: 0025-cache-Fix-cross-reference-nbdkit-readahead-filter.patch
Patch0026: 0026-curl-Don-t-document-curl-plugin-readahead-filter.patch
Patch0027: 0027-New-filter-scan.patch
Patch0028: 0028-scan-Remove-condition-variable.patch
Patch0029: 0029-scan-Small-typographical-fix-in-manual.patch
Patch0030: 0030-ssh-Don-t-reference-readahead-or-scan-filters-from-t.patch
Patch0031: 0031-scan-Fix-bound-so-we-don-t-try-to-prefetch-beyond-en.patch
Patch0032: 0032-tests-Add-a-regression-test-for-LUKS-zeroing-crash.patch
Patch0033: 0033-rate-Allow-burstiness-to-be-controlled.patch
# For automatic RPM Provides generation.
# See: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html
@ -1214,7 +1218,7 @@ export LIBGUESTFS_TRACE=1
%changelog
* Wed Jul 06 2022 Richard W.M. Jones <rjones@redhat.com> - 1.30.6-2
* Thu Jul 07 2022 Richard W.M. Jones <rjones@redhat.com> - 1.30.6-3
- Rebase to new stable branch version 1.30.6
resolves: rhbz#2059289
- Add automatic provides generator and subpackage nbdkit-srpm-macros
@ -1235,6 +1239,11 @@ export LIBGUESTFS_TRACE=1
- Backport new scan filter from 1.32.
- Add new Python binding for nbdkit_parse_size from 1.32
- Add new rate filter burstiness setting from 1.32
- vddk: Suppress new VDDK "phone home" messages
resolves: rhbz#2104720
- vddk: Clearer error message when thumbprint is wrong
resolves: rhbz#1905772
- Fix memory allocator=malloc,mlock=true (2044432)
* Mon Jan 24 2022 Richard W.M. Jones <rjones@redhat.com> - 1.28.5-1
- Rebase to new stable branch version 1.28.5