settings: Use strtoul(3) for settings to int conversion
authorThomas Egerer <thomas.egerer@secunet.com>
Wed, 25 Mar 2020 17:01:37 +0000 (18:01 +0100)
committerTobias Brunner <tobias@strongswan.org>
Thu, 26 Mar 2020 14:26:59 +0000 (15:26 +0100)
commit99bef7b686970d3dae3130fb5ca2b856400a4f12
treea044d563f508b5d6f1bb11f658e9af6e26fe9f94
parentcb26c5547c78ece55baae7516ce993043b5b0783
settings: Use strtoul(3) for settings to int conversion

strtol(3) accepts values in the range of [LONG_MIN;LONG_MAX].  Based
on the architecture (32 or 64 bits), these values expand to either
0x8000000000000000/0x7fffffffffffffff for 64-bit builds, or
0x80000000/0x7fffffff for 32-bit builds.

The behavior when retrieving non-default values for charon.spi_min or
charon.spi_max, for example, depends on the architecture of the target
platform.  While 0xC000001/0xCFFFFFFE work fine on a 64-bit build, on a
32-bit build, due to the use of strtol(3), an ERANGE causes get_int()
to return the default values.

By using strtoul(3) the default is only returned if the input value
exceeds 32 or 64 bits, based on the platform.  Negative values are still
parsed correctly.

Signed-off-by: Thomas Egerer <thomas.egerer@secunet.com>
src/libstrongswan/settings/settings.c