mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-02-03 11:54:02 +00:00
Allow more signed integer types in test function arguments
Now that the C code supports the full range of intmax_t, allow any size of signed integer type in the .data file parser. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
872948cc72
commit
6f5082bf4d
@ -171,8 +171,23 @@ import string
|
||||
import argparse
|
||||
|
||||
|
||||
# Types regognized as integer arguments in test functions.
|
||||
INTEGER_TYPES = frozenset(['int'])
|
||||
# Types regognized as signed integer arguments in test functions.
|
||||
SIGNED_INTEGER_TYPES = frozenset([
|
||||
'char',
|
||||
'short',
|
||||
'short int',
|
||||
'int',
|
||||
'int8_t',
|
||||
'int16_t',
|
||||
'int32_t',
|
||||
'int64_t',
|
||||
'intmax_t',
|
||||
'long',
|
||||
'long int',
|
||||
'long long int',
|
||||
'mbedtls_mpi_sint',
|
||||
'psa_status_t',
|
||||
])
|
||||
# Types recognized as string arguments in test functions.
|
||||
STRING_TYPES = frozenset(['char*', 'const char*', 'char const*'])
|
||||
# Types recognized as hex data arguments in test functions.
|
||||
@ -471,7 +486,7 @@ def parse_function_argument(arg, arg_idx, args, local_vars, args_dispatch):
|
||||
# E.g. "int x[42]"
|
||||
return None
|
||||
typ, _ = m.groups()
|
||||
if typ in INTEGER_TYPES:
|
||||
if typ in SIGNED_INTEGER_TYPES:
|
||||
args.append('int')
|
||||
args_dispatch.append('((mbedtls_test_argument_t*)params[%d])->sint' % arg_idx)
|
||||
return 1
|
||||
|
@ -507,10 +507,10 @@ class ParseFuncSignature(TestCase):
|
||||
|
||||
def test_unsupported_arg(self):
|
||||
"""
|
||||
Test unsupported arguments (not among int, char * and data_t)
|
||||
Test unsupported argument type
|
||||
:return:
|
||||
"""
|
||||
line = 'void entropy_threshold( char * a, data_t * h, char result )'
|
||||
line = 'void entropy_threshold( char * a, data_t * h, unknown_t result )'
|
||||
self.assertRaises(ValueError, parse_function_arguments, line)
|
||||
|
||||
def test_empty_params(self):
|
||||
|
@ -56,6 +56,10 @@ printf_int:"%d":-2147483648:"-2147483648"
|
||||
printf "%d", -0x80000000
|
||||
printf_int:"%d":-0x80000000:"-2147483648"
|
||||
|
||||
# Test that LONG_MAX is coming out untruncated through the test framework.
|
||||
printf "%lx", LONG_MAX
|
||||
printf_long_max:"%lx":LONG_MAX
|
||||
|
||||
# The next few test cases exercise how the test framework handles special
|
||||
# characters in strings.
|
||||
printf "%c", SPACE, SPACE
|
||||
|
@ -31,6 +31,31 @@ exit:
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void printf_long_max(const char *format, long value)
|
||||
{
|
||||
char *expected = NULL;
|
||||
char *output = NULL;
|
||||
/* "0x" plus 2 hex digits per byte */
|
||||
const size_t n = sizeof(value) * 2;
|
||||
|
||||
/* We assume that long has no padding bits! */
|
||||
ASSERT_ALLOC(expected, n + 1);
|
||||
expected[0] = '7';
|
||||
memset(expected + 1, 'f', sizeof(value) * 2 - 1);
|
||||
|
||||
ASSERT_ALLOC(output, n + 1);
|
||||
TEST_EQUAL(n, mbedtls_snprintf(output, n + 1, format, value));
|
||||
ASSERT_COMPARE(expected, n + 1, output, n + 1);
|
||||
mbedtls_free(output);
|
||||
output = NULL;
|
||||
|
||||
exit:
|
||||
mbedtls_free(output);
|
||||
mbedtls_free(expected);
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void printf_char2(char *format, int arg1, int arg2, char *result)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user