From 5b8e0563f950aa5d246f32785afffd8824d9f9ab Mon Sep 17 00:00:00 2001 From: Frank Lichtenheld Date: Wed, 8 Oct 2025 15:33:31 +0200 Subject: [PATCH] test_options_parse: Do not use uintmax_t instead of LargestIntegralType At least on OpenBSD it seems that uintmax_t maps to unsigned long long always, but LargestIntegralType is unsigned long. So if we have a version of cmocka.h that defines LargestIntegralType then respect that. Change-Id: I59a49696acd665d43b21e5c23f24b86c15989cd6 Signed-off-by: Frank Lichtenheld Acked-by: Gert Doering Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1256 Message-Id: <20251008133338.23652-1-gert@greenie.muc.de> URL: https://sourceforge.net/p/openvpn/mailman/message/59243971/ Signed-off-by: Gert Doering --- tests/unit_tests/openvpn/test_options_parse.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/openvpn/test_options_parse.c b/tests/unit_tests/openvpn/test_options_parse.c index e552dd70c..0ae37f597 100644 --- a/tests/unit_tests/openvpn/test_options_parse.c +++ b/tests/unit_tests/openvpn/test_options_parse.c @@ -198,14 +198,25 @@ read_single_config(struct options *options, const char *config) &option_types_found, &es); } +/* compat with various versions of cmocka.h + * Older versions have LargestIntegralType. Newer + * versions use uintmax_t. But LargestIntegralType + * is not guaranteed to be equal to uintmax_t, so + * we can't use that unconditionally. So we only use + * it if cmocka.h does not define LargestIntegralType. + */ +#ifndef LargestIntegralType +#define LargestIntegralType uintmax_t +#endif + union tokens_parameter { - uintmax_t as_int; + LargestIntegralType as_int; void *as_pointer; }; static int -check_tokens(const uintmax_t value, const uintmax_t expected) +check_tokens(const LargestIntegralType value, const LargestIntegralType expected) { union tokens_parameter temp; temp.as_int = value; -- 2.47.3