main: assert supported integer size, representation and conversion

Abort immediately on start if chronyd is compiled on a platform with int
shorter than 32 bits, using other representation than two's complement,
or unexpected conversion of large unsigned integers to signed.
This commit is contained in:
Miroslav Lichvar 2015-12-02 12:18:01 +01:00
parent 8e71a46173
commit bafb434f06

14
main.c
View file

@ -68,6 +68,18 @@ static REF_Mode ref_mode = REF_ModeNormal;
/* ================================================== */
static void
do_platform_checks(void)
{
/* Require at least 32-bit integers, two's complement representation and
the usual implementation of conversion of unsigned integers */
assert(sizeof (int) >= 4);
assert(-1 == ~0);
assert((int32_t)4294967295 == (int32_t)-1);
}
/* ================================================== */
static void
delete_pidfile(void)
{
@ -351,6 +363,8 @@ int main
int system_log = 1;
int config_args = 0;
do_platform_checks();
LOG_Initialise();
/* Parse command line options */