mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-03-28 08:37:25 +00:00
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>
76 lines
1.8 KiB
C
76 lines
1.8 KiB
C
/* BEGIN_HEADER */
|
|
#include "mbedtls/platform.h"
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#define NEWLINE_CHAR '\n'
|
|
#define SPACE_CHAR ' '
|
|
#define DOUBLE_QUOTE_CHAR '"'
|
|
#define COLON_CHAR ':'
|
|
#define BACKSLASH_CHAR '\\'
|
|
#define LOWERCASE_N_CHAR 'n'
|
|
/* END_HEADER */
|
|
|
|
/* BEGIN_CASE */
|
|
void printf_int(char *format, int x, char *result)
|
|
{
|
|
char *output = NULL;
|
|
const size_t n = strlen(result);
|
|
|
|
/* Nominal case: buffer just large enough */
|
|
ASSERT_ALLOC(output, n + 1);
|
|
TEST_EQUAL(n, mbedtls_snprintf(output, n + 1, format, x));
|
|
ASSERT_COMPARE(result, n + 1, output, n + 1);
|
|
mbedtls_free(output);
|
|
output = NULL;
|
|
|
|
exit:
|
|
mbedtls_free(output);
|
|
}
|
|
/* 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)
|
|
{
|
|
char *output = NULL;
|
|
const size_t n = strlen(result);
|
|
|
|
/* Nominal case: buffer just large enough */
|
|
ASSERT_ALLOC(output, n + 1);
|
|
TEST_EQUAL(n, mbedtls_snprintf(output, n + 1, format, arg1, arg2));
|
|
ASSERT_COMPARE(result, n + 1, output, n + 1);
|
|
mbedtls_free(output);
|
|
output = NULL;
|
|
|
|
exit:
|
|
mbedtls_free(output);
|
|
}
|
|
/* END_CASE */
|