From 198f87835dc448c7561e2d8ba0ece24e63bc9447 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Tue, 8 Nov 2022 09:08:32 +0100 Subject: tap: Return -EIO from tap_handler_passt() on inconsistent packet stream While it's important to fail in that case, it makes little sense to fail quietly: it's better to tell qemu explicitly that something went wrong and that we won't recover, by closing the socket. Signed-off-by: Stefano Brivio --- tap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tap.c b/tap.c index 11ac732..abeff25 100644 --- a/tap.c +++ b/tap.c @@ -757,7 +757,7 @@ redo: rem = recv(c->fd_tap, p + n, (ssize_t)sizeof(uint32_t) - n, 0); if ((n += rem) != (ssize_t)sizeof(uint32_t)) - return 0; + return -EIO; } len = ntohl(*(uint32_t *)p); @@ -771,7 +771,7 @@ redo: if (len > n) { rem = recv(c->fd_tap, p + n, len - n, 0); if ((n += rem) != len) - return 0; + return -EIO; } /* Complete the partial read above before discarding a malformed -- cgit v1.2.3