Hi,
I have been using the mqttClient-for-Legato library for a couple of days now, and I faced an error while building the legato app providing the MQTT API:
/home/xxxxxxxx/mqttClientApi/mqttClientApiComponent/mbedtls/library/x509_crt.c:1173:62: error: '%s' directive output may be truncated writing up to 255 bytes into a region of size 254 [-Werror=format-truncation=]
mbedtls_snprintf( entry_name, sizeof entry_name, "%s/%s", path, entry->d_name );
^~
In file included from /home/xxxxxxxx/mqttClientApi/mqttClientApiComponent/mbedtls/library/x509_crt.c:51:0:
/home/xxxxxxxx/mqttClientApi/mqttClientApiComponent/mbedtls/include/mbedtls/platform.h:184:28: note: 'snprintf' output 2 or more bytes (assuming 257) into a destination of size 255
#define mbedtls_snprintf snprintf
/home/xxxxxxxx/mqttClientApi/mqttClientApiComponent/mbedtls/library/x509_crt.c:1173:9: note: in expansion of macro 'mbedtls_snprintf'
mbedtls_snprintf( entry_name, sizeof entry_name, "%s/%s", path, entry->d_name );
^~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
which corresponds to this part of the code.
The sizes indeed do not fit, comparing the entry_name
size here hard-coded, and the size of entry->d_name
from the dirent
struct.
As a workaround, I had to extend the size of entry_name
up to 257.
Now, this part of the code has been updated on the official mbedtls project (both in the latest release—2.16—and in the release used in this mqttClient-for-Legato repo—2.9) so integrating mbedtls updates should fix the issue. I have not tried yet (few details in the interface have changed with the updates, and the legato component’s includes
should also change), and for now simply been using my workaround.