This fixes two bugs:
1. An invalid offset could be specified which wasn't checked to be in
the bounds of the config blob.
2. The data_len check was incorrect as it would allow reading one byte
past the config blob lenght.
Before the changes the following operation wouldn't fail:
Assuming we have blob of 64 bytes size and attempt a read with an
offset of 32 and data_len of 32, we actually try to read 32 bytes
starting from the 33. byte in the config blob. This reads exactly
one byte past array. Therefore we have to subtract one byte the get
the correct length.
* Fix unaligned memory access in config blob handler
data* points in the middle of an u8 array, casting this to an u16* and
dereferencing it leads to an unaligned memory access - which hardfaults
on Cortex M0 mcus e.g. RP2040s.
* Actually read until there is no more data to be read