fix(PIBitArray): guard pop_back() against empty array
pop_back() called resize(size_ - 1) without checking for empty. On empty array, uint underflow produced UINT_MAX, causing bytesInBits(UINT_MAX) overflow and subsequent OOB access. pop_front() already had this guard; pop_back() was missing it.
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
//! \~russian Упакованный массив битов
|
//! \~russian Упакованный массив битов
|
||||||
/*
|
/*
|
||||||
PIP - Platform Independent Primitives
|
PIP - Platform Independent Primitives
|
||||||
Packed bit array
|
Packed bit array
|
||||||
Ivan Pelipenko peri4ko@yandex.ru
|
Ivan Pelipenko peri4ko@yandex.ru
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
@@ -173,7 +173,10 @@ public:
|
|||||||
|
|
||||||
//! \~english Remove one bit from the end of array.
|
//! \~english Remove one bit from the end of array.
|
||||||
//! \~russian Удаляет один бит с конца массива.
|
//! \~russian Удаляет один бит с конца массива.
|
||||||
PIBitArray & pop_back() { return resize(size_ - 1); }
|
PIBitArray & pop_back() {
|
||||||
|
if (size_ == 0) return *this;
|
||||||
|
return resize(size_ - 1);
|
||||||
|
}
|
||||||
|
|
||||||
//! \~english Remove one bit from the beginning of array.
|
//! \~english Remove one bit from the beginning of array.
|
||||||
//! \~russian Удаляет один бит с начала массива.
|
//! \~russian Удаляет один бит с начала массива.
|
||||||
|
|||||||
Reference in New Issue
Block a user