From: Samuel Just Date: Sat, 20 Feb 2021 03:27:49 +0000 (+0000) Subject: crimson/tools/store-nbd: check length of buffer X-Git-Tag: v17.1.0~2914^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a232a75b3b87a37d2df89786ee978925770d07d9;p=ceph-ci.git crimson/tools/store-nbd: check length of buffer read_exactly does not return an error if the stream has ended. Signed-off-by: Samuel Just --- diff --git a/src/crimson/tools/store-nbd.cc b/src/crimson/tools/store-nbd.cc index 839daff8dc6..ddaae6e6506 100644 --- a/src/crimson/tools/store-nbd.cc +++ b/src/crimson/tools/store-nbd.cc @@ -168,6 +168,11 @@ struct request_context_t { seastar::future<> read_request(seastar::input_stream &in) { return in.read_exactly(sizeof(struct nbd_request) ).then([this, &in](auto buf) { + if (buf.size() < sizeof(struct nbd_request)) { + throw std::system_error( + std::make_error_code( + std::errc::connection_reset)); + } auto p = buf.get(); magic = seastar::consume_be(p); type = seastar::consume_be(p);