Skip to content

Commit 7495f3f

Browse files
committed
wifi ssl: handle mbedtls_pem_write_buffer return value
1 parent a6aadef commit 7495f3f

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

UNOR4USBBridge/cmds_wifi_SSL.h

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,17 @@ void CAtHandler::add_cmds_wifi_SSL() {
165165
/* Convert client certificate DER buffer into PEM */
166166
clients_cert_pem[internal_sock].resize(1024);
167167
size_t olen;
168-
mbedtls_pem_write_buffer("-----BEGIN CERTIFICATE-----\n",
169-
"-----END CERTIFICATE-----\n",
170-
client_cert_der.data(), size,
171-
clients_cert_pem[internal_sock].data(), 1024,
172-
&olen);
168+
int ret = -1;
169+
if ((ret = mbedtls_pem_write_buffer("-----BEGIN CERTIFICATE-----\n",
170+
"-----END CERTIFICATE-----\n",
171+
client_cert_der.data(), size,
172+
clients_cert_pem[internal_sock].data(), 1024,
173+
&olen)) != 0)
174+
{
175+
log_e(" failed\n ! mbedtls_pem_write_buffer returned -0x%04x", (unsigned int) -ret);
176+
clients_cert_pem[internal_sock].clear();
177+
return chAT::CommandStatus::ERROR;
178+
}
173179
clients_cert_pem[internal_sock].resize(olen);
174180

175181
#if ECC_DEBUG_ENABLED
@@ -183,7 +189,6 @@ void CAtHandler::add_cmds_wifi_SSL() {
183189
/* Read private key from non volatile storage in DER format */
184190
std::vector<unsigned char> client_key_der;
185191
int len = sse.getBytesLength(slot_num.c_str());
186-
int ret = -1;
187192
client_key_der.resize(len);
188193
if ((ret = sse.getBytes(slot_num.c_str(), client_key_der.data(), len)) < len) {
189194
log_e(" failed\n ! sse.getBytes returned -0x%04x", (unsigned int) -ret);
@@ -197,11 +202,16 @@ void CAtHandler::add_cmds_wifi_SSL() {
197202

198203
/* Convert private key in PEM format */
199204
clients_key_pem[internal_sock].resize(1024);
200-
mbedtls_pem_write_buffer("-----BEGIN EC PRIVATE KEY-----\n",
201-
"-----END EC PRIVATE KEY-----\n",
202-
client_key_der.data(), len,
203-
clients_key_pem[internal_sock].data(), 1024,
204-
&olen);
205+
if ((ret = mbedtls_pem_write_buffer("-----BEGIN EC PRIVATE KEY-----\n",
206+
"-----END EC PRIVATE KEY-----\n",
207+
client_key_der.data(), len,
208+
clients_key_pem[internal_sock].data(), 1024,
209+
&olen)) != 0)
210+
{
211+
log_e(" failed\n ! mbedtls_pem_write_buffer returned -0x%04x", (unsigned int) -ret);
212+
clients_cert_pem[internal_sock].clear();
213+
return chAT::CommandStatus::ERROR;
214+
}
205215
clients_key_pem[internal_sock].resize(olen);
206216

207217
#if ECC_DEBUG_ENABLED

0 commit comments

Comments
 (0)