diff options
author | Rich Felker <dalias@aerifal.cx> | 2020-04-30 21:36:43 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2020-04-30 21:52:28 -0400 |
commit | 593caa456309714402ca4cb77c3770f4c24da9da (patch) | |
tree | 29d9625b6a93d3d6232f504717070c7d15ce8f77 /arch/m68k/syscall_arch.h | |
parent | 4486c579cbf0d989080705f515d08cb48636ba88 (diff) | |
download | musl-593caa456309714402ca4cb77c3770f4c24da9da.tar.gz musl-593caa456309714402ca4cb77c3770f4c24da9da.tar.xz musl-593caa456309714402ca4cb77c3770f4c24da9da.zip |
fix undefined behavior from signed overflow in strstr and memmem
unsigned char promotes to int, which can overflow when shifted left by 24 bits or more. this has been reported multiple times but then forgotten. it's expected to be benign UB, but can trap when built with explicit overflow catching (ubsan or similar). fix it now. note that promotion to uint32_t is safe and portable even outside of the assumptions usually made in musl, since either uint32_t has rank at least unsigned int, so that no further default promotions happen, or int is wide enough that the shift can't overflow. this is a desirable property to have in case someone wants to reuse the code elsewhere.
Diffstat (limited to 'arch/m68k/syscall_arch.h')
0 files changed, 0 insertions, 0 deletions