diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2022-11-08 09:08:32 +0100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2022-11-10 11:17:50 +0100 |
commit | 198f87835dc448c7561e2d8ba0ece24e63bc9447 (patch) | |
tree | bd6c775e686411a55b5d14aa4f93f408fc4d33d5 | |
parent | 510dace86ccf0bd63be3b1dbd35ae9c0b0538e5b (diff) | |
download | passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.gz passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.bz2 passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.lz passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.xz passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.tar.zst passt-198f87835dc448c7561e2d8ba0ece24e63bc9447.zip |
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 <sbrivio@redhat.com>
-rw-r--r-- | tap.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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 |