diff options
| author | Max <msuraev@sysmocom.de> | 2016-01-21 17:16:56 +0100 | 
|---|---|---|
| committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2016-01-22 23:21:58 +0100 | 
| commit | 08621a8ebb163aed6ba96e52ad283b91c04501a0 (patch) | |
| tree | 58f843e0a835a02f2bad4363a80bef35123de39f /src | |
| parent | cf37c4cd293def64ca87a82def0be2c8aab12cf0 (diff) | |
bitvec: Fix unaligned memory access in osmo_revbytebits_buf
The undefined behavior sanitizer found the 32bit load from an
unaligned memory address. This will cause an exception on ARMv5te
and a manual fix-up.
[hfreyther: On armv6, x86 the usage of memcpy leads to shorter
amount of instructions but on armv5te the memcpy is not expanded
leading to a branch. Use the version of max until we have the time
to benchmark it]
Sponsored-by: On-Waves ehf
Diffstat (limited to 'src')
| -rw-r--r-- | src/bits.c | 3 | 
1 files changed, 1 insertions, 2 deletions
| @@ -221,8 +221,7 @@ void osmo_revbytebits_buf(uint8_t *buf, int len)  	}  	for (i = unaligned_cnt; i + 3 < len; i += 4) { -		uint32_t *cur = (uint32_t *) (buf + i); -		*cur = osmo_revbytebits_32(*cur); +		osmo_store32be(osmo_revbytebits_32(osmo_load32be(buf + i)), buf + i);  		len_remain -= 4;  	} | 
