RIOT-OS is packaging this repo downstream. I just opened a PR to fix a memory corruption bug downstream that still seems to be present here.
The issue is relatively trivial: The C standard doesn't say which size an enum has, only that it needs to be large enough to hold all constants defined in that enum. So sizeof(enum QoS) == sizeof(int) - as assumed in this library - is not generally correct. Casting a pointer to enum QoS to int * and passing this to a function that accesses this int * could e.g. result in a 32 bit memory access of an 8 bit value.
This issue might be something you want to fix soonish.
RIOT-OS is packaging this repo downstream. I just opened a PR to fix a memory corruption bug downstream that still seems to be present here.
The issue is relatively trivial: The C standard doesn't say which size an
enum
has, only that it needs to be large enough to hold all constants defined in thatenum
. Sosizeof(enum QoS) == sizeof(int)
- as assumed in this library - is not generally correct. Casting a pointer toenum QoS
toint *
and passing this to a function that accesses thisint *
could e.g. result in a 32 bit memory access of an 8 bit value.This issue might be something you want to fix soonish.