• Bryce Harrington's avatar
    Re-apply "config-parser: Catch negative numbers assigned to unsigned config values" · d0716f4a
    Bryce Harrington authored
    [With hexadecimal color values now handled via their own routine,
    re-introduce the negative unsigned numbers fix.]
    
    strtoul() has a side effect that when given a string representing a
    negative number, it treats it as a high value hexadecimal.  IOW,
    strtoul("-42", &val) sets val to 0xffffffd6.  This could potentially
    result in unintended surprise behaviors.
    
    Catch this by using strtol() and then manually check for the negative
    value.  This logic is modelled after Wayland's strtouint().
    
    Note that this change unfortunately reduces the range of parseable
    numbers from [0,UINT_MAX] to [0,INT_MAX].  The current users of
    weston_config_section_get_uint() are anticipating numbers far smaller
    than either of these limits, so the change is believed to have no impact
    in practice.
    
    Also add a test case for negative numbers that catches this error
    condition.
    Signed-off-by: default avatarBryce Harrington <bryce@osg.samsung.com>
    Reviewed-by: Eric Engestrom's avatarEric Engestrom <eric.engestrom@imgtec.com>
    d0716f4a
config-parser-test.c 14.6 KB