Simplify runtime version info string methods

Return a const char* instead of taking a char* as an argument.

This aligns us with the interface used in TF PSA Crypto.

Signed-off-by: Bence Szépkúti <bence.szepkuti@arm.com>
This commit is contained in:
Bence Szépkúti
2025-08-18 11:35:47 +02:00
parent 265e98da45
commit b2ba9fa68b
4 changed files with 21 additions and 25 deletions

View File

@@ -0,0 +1,9 @@
API changes
* Change the signature of the runtime version information methods that took
a char* as an argument to take zero arguments and return a const char*
instead. This aligns us with the interface used in TF PSA Crypto 1.0.
If you need to support linking against both Mbed TLS 3.x and 4.x, please
use the build-time version macros or mbedtls_version_get_number() to
determine the correct signature for mbedtls_version_get_string() and
mbedtls_version_get_string_full() before calling them.
Fixes issue #10308.

View File

@@ -32,23 +32,14 @@ extern "C" {
unsigned int mbedtls_version_get_number(void);
/**
* Get the version string ("x.y.z").
*
* \param string The string that will receive the value.
* (Should be at least 9 bytes in size)
* Get a pointer to the version string ("x.y.z").
*/
void mbedtls_version_get_string(char *string);
const char *mbedtls_version_get_string(void);
/**
* Get the full version string ("Mbed TLS x.y.z").
*
* \param string The string that will receive the value. The Mbed TLS version
* string will use 18 bytes AT MOST including a terminating
* null byte.
* (So the buffer should be at least 18 bytes to receive this
* version string).
* Get a pointer to the full version string ("Mbed TLS x.y.z").
*/
void mbedtls_version_get_string_full(char *string);
const char *mbedtls_version_get_string_full(void);
/**
* \brief Check if support for a feature was compiled into this

View File

@@ -17,16 +17,14 @@ unsigned int mbedtls_version_get_number(void)
return MBEDTLS_VERSION_NUMBER;
}
void mbedtls_version_get_string(char *string)
const char *mbedtls_version_get_string(void)
{
memcpy(string, MBEDTLS_VERSION_STRING,
sizeof(MBEDTLS_VERSION_STRING));
return MBEDTLS_VERSION_STRING;
}
void mbedtls_version_get_string_full(char *string)
const char *mbedtls_version_get_string_full(void)
{
memcpy(string, MBEDTLS_VERSION_STRING_FULL,
sizeof(MBEDTLS_VERSION_STRING_FULL));
return MBEDTLS_VERSION_STRING_FULL;
}
#endif /* MBEDTLS_VERSION_C */

View File

@@ -38,19 +38,17 @@ void check_compiletime_version(char *version_str)
void check_runtime_version(char *version_str)
{
char build_str[100];
char get_str[100];
const char *get_str;
char build_str_full[100];
char get_str_full[100];
const char *get_str_full;
unsigned int get_int;
memset(build_str, 0, 100);
memset(get_str, 0, 100);
memset(build_str_full, 0, 100);
memset(get_str_full, 0, 100);
get_int = mbedtls_version_get_number();
mbedtls_version_get_string(get_str);
mbedtls_version_get_string_full(get_str_full);
get_str = mbedtls_version_get_string();
get_str_full = mbedtls_version_get_string_full();
mbedtls_snprintf(build_str, 100, "%u.%u.%u",
(get_int >> 24) & 0xFF,