Skip to content

Commit

Permalink
SigSpec/SigChunk::extract(): assert offset/length are not out of range
Browse files Browse the repository at this point in the history
  • Loading branch information
nakengelhardt committed Jan 25, 2024
1 parent 80511ce commit efe4d6d
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions kernel/rtlil.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<RTLIL::SigBit>(bits_.begin() + offset, bits_.begin() + offset + length);
Expand Down

0 comments on commit efe4d6d

Please sign in to comment.