From: Alan T. DeKok Date: Sun, 10 Dec 2023 13:23:02 +0000 (-0500) Subject: add more upcast corner cases X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8e2b524dd99db6621cd969503acb889f7f0ae450;p=thirdparty%2Ffreeradius-server.git add more upcast corner cases --- diff --git a/src/lib/util/calc.c b/src/lib/util/calc.c index aa30f9066e9..bfd8be60a5f 100644 --- a/src/lib/util/calc.c +++ b/src/lib/util/calc.c @@ -98,6 +98,8 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = { */ [FR_TYPE_IPV4_PREFIX] = { [FR_TYPE_IPV4_PREFIX] = FR_TYPE_IPV4_PREFIX, + [FR_TYPE_IPV6_PREFIX] = FR_TYPE_IPV6_PREFIX, + [FR_TYPE_COMBO_IP_PREFIX] = FR_TYPE_COMBO_IP_PREFIX, [FR_TYPE_BOOL] = FR_TYPE_IPV4_ADDR, @@ -119,6 +121,7 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = { [FR_TYPE_IPV6_PREFIX] = { [FR_TYPE_IPV6_PREFIX] = FR_TYPE_IPV6_PREFIX, + [FR_TYPE_COMBO_IP_PREFIX] = FR_TYPE_COMBO_IP_PREFIX, [FR_TYPE_BOOL] = FR_TYPE_IPV6_ADDR, @@ -140,6 +143,7 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = { [FR_TYPE_COMBO_IP_ADDR] = { [FR_TYPE_IPV6_PREFIX] = FR_TYPE_COMBO_IP_PREFIX, + [FR_TYPE_COMBO_IP_PREFIX] = FR_TYPE_COMBO_IP_PREFIX, [FR_TYPE_BOOL] = FR_TYPE_COMBO_IP_ADDR, @@ -160,8 +164,6 @@ static const fr_type_t upcast_op[FR_TYPE_MAX + 1][FR_TYPE_MAX + 1] = { }, [FR_TYPE_COMBO_IP_PREFIX] = { - [FR_TYPE_IPV6_PREFIX] = FR_TYPE_COMBO_IP_PREFIX, - [FR_TYPE_BOOL] = FR_TYPE_COMBO_IP_ADDR, [FR_TYPE_UINT8] = FR_TYPE_COMBO_IP_ADDR, diff --git a/src/tests/unit/calc.txt b/src/tests/unit/calc.txt index 4306e1dea13..9e5fe20fb29 100644 --- a/src/tests/unit/calc.txt +++ b/src/tests/unit/calc.txt @@ -176,6 +176,10 @@ match 127.0.0.1 calc combo-prefix 127/8 + uint8 1 -> combo-ip match 127.0.0.1 +# auto-upcast +calc combo-prefix 127/8 + uint8 1 -> null +match 127.0.0.1 + calc ipv4addr 192.168.2.1 & uint32 0xffff0000 -> combo-prefix match 192.168.0.0/16 @@ -209,4 +213,4 @@ calc string "2" += string "test" match 2test count -match 96 +match 98