Buffer over-read
There is a buffer over-read in src/OpenVDS/VDS/ConvertValues.h:
template static void CopyFrom1Bit(void * __restrict voiddst, const void* __restrict voidsrc, int32_t count) { T* target = (T*)voiddst; uint8_t* source = (uint8_t*)voidsrc; uint8_t bits = *source; int32_t mask = 1; for (int i = 0; i < count; i++) { *target = (bits & mask)? T(1) : T(0); target++; mask <<= 1; if (mask == 0x100) { source++; bits = *source; <-- Read one past end of buffer on this line. mask = 1; } } }
I assume this happens on last iteration of the loop so the value is never used. It is highly unlikely that this will cause any issues, but I guess there is a theoretical possibility that this can cause a segmentation fault.