/* * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2024, STMicroelectronics * */ #include /** * @internal * * @brief Copies a string to a destination buffer with size limitation and returns the length of * the destination string. * * This function copies up to `s_size - 1` characters from the source string `src` * to the destination buffer `dst`, ensuring that the destination buffer is * null-terminated. The function returns the length of the `dst` string. * If the length of `src` string is greater than or equal to `d_size`, the destination * buffer will be truncated. * * @param dst Destination buffer where the string will be copied. * @param d_size Size of the destination buffer. * @param src Source string to be copied. * @param s_size Size of the source buffer. * @return The length of the string contained in the `dst` buffer. * * @note If the size of the destination buffer is 0, the function does not copy any characters and * the destination buffer is not null-terminated. * @note The function ensures that the destination buffer is always null-terminated if `size` is * greater than 0. * @note The function ensures that no data is read past the end of the 'src' buffer. */ size_t safe_strcpy(char *dst, size_t d_size, const char *src, size_t s_size);