• Show log

    Commit

  • Hash : 153fde5b
    Author : Patrick Steinhardt
    Date : 2016-05-02T16:49:59

    delta-apply: fix sign extension
    
    We compute offsets by executing `off |= (*delta++ << 24)` for
    multiple constants, where `off` is of type `size_t` and `delta`
    is of type `unsigned char`. The usual arithmetic conversions (see
    ISO C89 ยง3.2.1.5 "Usual arithmetic conversions") kick in here,
    causing us to promote both operands to `int` and then extending
    the result to an `unsigned long` when OR'ing it with `off`.
    The integer promotion to `int` may result in wrong size
    calculations for big values.
    
    Fix the issue by making the constants `unsigned long`, causing both
    operands to be promoted to `unsigned long`.