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:
2026-08-06 10:18:51 +03:00
parent d7d9f8588d
commit 7ce0be4bab
+5 -2
View File
@@ -5,7 +5,7 @@
//! \~russian Упакованный массив битов
/*
PIP - Platform Independent Primitives
Packed bit array
Packed bit array
Ivan Pelipenko peri4ko@yandex.ru
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.
//! \~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.
//! \~russian Удаляет один бит с начала массива.