Support larger integer test arguments: C part

Change the type of signed integer arguments from int32_t to intmax_t.
This allows the C code to work with test function arguments with a range
larger than int32_t. A subsequent commit will change the .datax generator
to support larger types.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
diff --git a/tests/include/test/arguments.h b/tests/include/test/arguments.h
index 7ff416e..74bbbd5 100644
--- a/tests/include/test/arguments.h
+++ b/tests/include/test/arguments.h
@@ -32,7 +32,7 @@
 
 typedef union {
     size_t len;
-    int32_t s32;
+    intmax_t sint;
 } mbedtls_test_argument_t;
 
 #endif /* TEST_ARGUMENTS_H */
diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py
index 263cd90..a3f6937 100755
--- a/tests/scripts/generate_test_code.py
+++ b/tests/scripts/generate_test_code.py
@@ -473,7 +473,7 @@
     typ, _ = m.groups()
     if typ in INTEGER_TYPES:
         args.append('int')
-        args_dispatch.append('((mbedtls_test_argument_t*)params[%d])->s32' % arg_idx)
+        args_dispatch.append('((mbedtls_test_argument_t*)params[%d])->sint' % arg_idx)
         return 1
     if typ in STRING_TYPES:
         args.append('char*')
diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py
index 889b962..7c0ac0c 100755
--- a/tests/scripts/test_generate_test_code.py
+++ b/tests/scripts/test_generate_test_code.py
@@ -487,8 +487,8 @@
         self.assertEqual(local, '')
         self.assertEqual(arg_dispatch,
                          ['(char *) params[0]',
-                          '((mbedtls_test_argument_t*)params[1])->s32',
-                          '((mbedtls_test_argument_t*)params[2])->s32'])
+                          '((mbedtls_test_argument_t*)params[1])->sint',
+                          '((mbedtls_test_argument_t*)params[2])->sint'])
 
     def test_hex_params(self):
         """
@@ -503,7 +503,7 @@
                          '((mbedtls_test_argument_t*)params[2])->len};\n')
         self.assertEqual(arg_dispatch, ['(char *) params[0]',
                                         '&data1',
-                                        '((mbedtls_test_argument_t*)params[3])->s32'])
+                                        '((mbedtls_test_argument_t*)params[3])->sint'])
 
     def test_unsupported_arg(self):
         """
diff --git a/tests/suites/host_test.function b/tests/suites/host_test.function
index 59b18d2..06f391f 100644
--- a/tests/suites/host_test.function
+++ b/tests/suites/host_test.function
@@ -32,21 +32,19 @@
  *
  * \return      0 if success else 1
  */
-int verify_int(char *str, int32_t *p_value)
+int verify_int(char *str, intmax_t *p_value)
 {
     char *end = NULL;
     errno = 0;
+    /* Limit the range to long: for large integers, the test framework will
+     * use expressions anyway. */
     long value = strtol(str, &end, 0);
     if (errno == EINVAL || *end != '\0') {
         mbedtls_fprintf(stderr,
                         "Expected integer for parameter and got: %s\n", str);
         return KEY_VALUE_MAPPING_NOT_FOUND;
     }
-    if (errno == ERANGE
-#if LONG_MAX > 0x7fffffff
-        || value > 0x7fffffffL || value < -0x80000000L
-#endif
-        ) {
+    if (errno == ERANGE) {
         mbedtls_fprintf(stderr, "Integer out of range: %s\n", str);
         return KEY_VALUE_MAPPING_NOT_FOUND;
     }
@@ -222,7 +220,7 @@
                 break;
             }
         } else if (strcmp(type, "int") == 0) {
-            if (verify_int(val, &int_params_store->s32) == 0) {
+            if (verify_int(val, &int_params_store->sint) == 0) {
                 *out++ = (char *) int_params_store++;
             } else {
                 ret = (DISPATCH_INVALID_TEST_DATA);
@@ -245,7 +243,7 @@
             }
         } else if (strcmp(type, "exp") == 0) {
             int exp_id = strtol(val, NULL, 10);
-            if (get_expression(exp_id, &int_params_store->s32) == 0) {
+            if (get_expression(exp_id, &int_params_store->sint) == 0) {
                 *out++ = (char *) int_params_store++;
             } else {
                 ret = (DISPATCH_INVALID_TEST_DATA);
diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function
index 11a009a..6c8d98e 100644
--- a/tests/suites/main_test.function
+++ b/tests/suites/main_test.function
@@ -69,7 +69,7 @@
  *
  * \return       0 if exp_id is found. 1 otherwise.
  */
-int get_expression(int32_t exp_id, int32_t *out_value)
+int get_expression(int32_t exp_id, intmax_t *out_value)
 {
     int ret = KEY_VALUE_MAPPING_FOUND;