@@ -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