On Sun, Jul 16, 2023 at 04:10:56PM +0100, Richard W.M. Jones wrote:
On Sat, Jul 15, 2023 at 08:49:51PM -0500, Eric Blake wrote:
A compliant server should not send NBD_REPLY_TYPE_BLOCK_STATUS unless we successfully negotiated a meta context. And our default strictness settings refuse to let us send NBD_CMD_BLOCK_STATUS unless we negotiated a meta context. But when you mix non-default settings (using nbd_set_strict to disable STRICT_COMMANDS) to send a block status without having negotiated it, coupled with a non-compliant server that responds with status anyways, we can then hit the assertion failure where h->meta_valid is not set during the REPLY.CHUNK_REPLY.RECV_BS_ENTRIES state.
Thanks. I think this is worth a note in docs/libnbd-security.pod too.
Done in 61f8cf661f
The pipeline failed after you pushed this:
https://gitlab.com/nbdkit/libnbd/-/pipelines/932589424
but I think it's an unrelated OCaml failure. I'll take a proper look at it tomorrow.
My first reaction on seeing the failure message was to click the retry button in the UI; and that gave me a green checkmark before I had time to investigate what failed. We may be up against a pre-existing transient failure; I'll try and keep an eye out for a recurrence. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org