From 25c5896dc5c239e3a175c6c8fc5d7368946adeb6 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 6 Apr 2023 16:19:02 +1000 Subject: [PATCH] add some bounds checking asserts --- src/audio/include/stream_info.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/audio/include/stream_info.hpp b/src/audio/include/stream_info.hpp index 5a36384c..6256f2ee 100644 --- a/src/audio/include/stream_info.hpp +++ b/src/audio/include/stream_info.hpp @@ -67,6 +67,7 @@ class InputStream { explicit InputStream(RawStream* s) : raw_(s) {} void consume(std::size_t bytes) const { + assert(raw_->info->bytes_in_stream >= bytes); auto new_data = raw_->data.subspan(bytes); std::move(new_data.begin(), new_data.end(), raw_->data.begin()); raw_->info->bytes_in_stream = new_data.size_bytes(); @@ -88,7 +89,10 @@ class OutputStream { public: explicit OutputStream(RawStream* s) : raw_(s) {} - void add(std::size_t bytes) const { raw_->info->bytes_in_stream += bytes; } + void add(std::size_t bytes) const { + assert(raw_->info->bytes_in_stream + bytes <= raw_->data.size_bytes()); + raw_->info->bytes_in_stream += bytes; + } bool prepare(const StreamInfo::Format& new_format) { if (std::holds_alternative(raw_->info->format)) {