Patch 1 is a much smaller patch than Vladimir's attempt  at fixing
the client in the face of a malicious server.
Patch 2 is not to be applied; it is a hack for easily creating a
malicious server; by setting NBD_SERVER_DEBUG to a positive integer,
the server will intentionally send bad magic when it reaches that
I tested using:
NBD_SERVER_DEBUG=1 ./qemu-nbd -f raw -x foo file
qemu-io -c 'r 0 1' -c 'r 0 1' -f raw nbd://localhost:10809/foo
Without the patch, the qemu-io client hangs; with the patch, the
client reports 'read failed: Input/output error' for the first read
(where the bad server was detected) and 'read failed: Broken pipe'
for the second (because the client has already dropped the
connection from the bad server).
I would like this to go in -rc3, but would definitely appreciate
review, as the manipulation of coroutines was tricky for me to
step through in the debugger, and I want to make sure I'm not
leaking any memory or stranding an incomplete coroutine.
Eric Blake (2):
nbd: Drop connection if broken server is detected
HACK: define NBD_SERVER_DEBUG to force malicious server
block/nbd-client.c | 9 +++++++--
nbd/server.c | 11 +++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)