• R
    fix undefined behavior from signed overflow in strstr and memmem · 593caa45
    Rich Felker 提交于
    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.
    593caa45
strstr.c 3.4 KB