From efe4d6dbdc7366ee6e90df307bcc401a79af787b Mon Sep 17 00:00:00 2001 From: "N. Engelhardt" Date: Thu, 25 Jan 2024 12:28:17 +0100 Subject: [PATCH] SigSpec/SigChunk::extract(): assert offset/length are not out of range --- kernel/rtlil.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc index ffbd4b3ff..e065314dd 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -3693,6 +3693,9 @@ RTLIL::SigChunk::SigChunk(const RTLIL::SigBit &bit) RTLIL::SigChunk RTLIL::SigChunk::extract(int offset, int length) const { + log_assert(offset >= 0); + log_assert(length >= 0); + log_assert(offset + length <= width); RTLIL::SigChunk ret; if (wire) { ret.wire = wire; @@ -4377,6 +4380,9 @@ void RTLIL::SigSpec::remove(int offset, int length) RTLIL::SigSpec RTLIL::SigSpec::extract(int offset, int length) const { + log_assert(offset >= 0); + log_assert(length >= 0); + log_assert(offset + length <= width_); unpack(); cover("kernel.rtlil.sigspec.extract_pos"); return std::vector(bits_.begin() + offset, bits_.begin() + offset + length);