1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-21 19:33:03 +04:00

Merge pull request #26535 from mshabunin:fix-qr-bitstream-5x

objdetect: fix invalid vector access in QR encoder (5.x)
This commit is contained in:
Alexander Smorkalov
2024-11-29 17:56:33 +03:00
committed by GitHub
+5 -4
View File
@@ -711,17 +711,17 @@ void QRCodeEncoderImpl::padBitStream()
else if (pad_num <= 4)
{
int payload_size = (int)payload.size();
writeDecNumber(0, payload_size, payload);
payload.insert(payload.end(), payload_size, 0);
}
else
{
writeDecNumber(0, 4, payload);
payload.insert(payload.end(), 4, 0);
int i = payload.size() % bits;
if (i != 0)
{
writeDecNumber(0, bits - i, payload);
payload.insert(payload.end(), bits - i, 0);
}
pad_num = total_data - (int)payload.size();
@@ -1329,11 +1329,12 @@ private:
int val = 0;
while (bits >= actualBits) {
CV_CheckLT(idx, data.size(), "Not enough bits in the bitstream");
val |= data[idx++] << (bits - actualBits);
bits -= actualBits;
actualBits = 8;
}
if (bits) {
if (bits && idx < data.size()) {
val |= data[idx] >> (actualBits - bits);
actualBits -= bits;
data[idx] &= 255 >> (8 - actualBits);