X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=test%2Fconf_include_test.c;h=ee02d9b3fb4f638f8501555b75e291551875edfb;hp=7f99d3b15f1de223d1fce47cb2740213dcd518b6;hb=bfb10b975818d1887d676d309fcc21a765611f6d;hpb=1a54618ba6ec09b85f00f5ca12ef275b429ff18a diff --git a/test/conf_include_test.c b/test/conf_include_test.c index 7f99d3b15f..ee02d9b3fb 100644 --- a/test/conf_include_test.c +++ b/test/conf_include_test.c @@ -123,6 +123,61 @@ static int test_load_config(void) return 1; } +static int test_check_null_numbers(void) +{ +#if defined(_BSD_SOURCE) \ + || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L) \ + || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600) + long val = 0; + + /* Verify that a NULL config with a present environment variable returns + * success and the value. + */ + if (!TEST_int_eq(setenv("FNORD", "123", 1), 0) + || !TEST_true(NCONF_get_number(NULL, "missing", "FNORD", &val)) + || !TEST_long_eq(val, 123)) { + TEST_note("environment variable with NULL conf failed"); + return 0; + } + + /* + * Verify that a NULL config with a missing envrionment variable returns + * a failure code. + */ + if (!TEST_int_eq(unsetenv("FNORD"), 0) + || !TEST_false(NCONF_get_number(NULL, "missing", "FNORD", &val))) { + TEST_note("missing environment variable with NULL conf failed"); + return 0; + } +#endif + return 1; +} + +static int test_check_overflow(void) +{ +#if defined(_BSD_SOURCE) \ + || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L) \ + || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600) + long val = 0; + char max[(sizeof(long) * 8) / 3 + 3]; + char *p; + + p = max + sprintf(max, "0%ld", LONG_MAX) - 1; + setenv("FNORD", max, 1); + if (!TEST_true(NCONF_get_number(NULL, "missing", "FNORD", &val)) + || !TEST_long_eq(val, LONG_MAX)) + return 0; + + while (++*p > '9') + *p-- = '0'; + + setenv("FNORD", max, 1); + if (!TEST_false(NCONF_get_number(NULL, "missing", "FNORD", &val))) + return 0; +#endif + return 1; +} + int setup_tests(void) { const char *conf_file; @@ -150,6 +205,8 @@ int setup_tests(void) change_path(conf_file); ADD_TEST(test_load_config); + ADD_TEST(test_check_null_numbers); + ADD_TEST(test_check_overflow); return 1; }