1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

examples/dtls-sock: fix error handling in client

Not closing a stack allocated socket before going out of scope of the
allocation is something to avoid. This fixes crashes at runtime
when adding the credentials fails.
This commit is contained in:
Marian Buschsieweke 2023-12-27 21:24:25 +01:00
parent 26682d882a
commit ed4b777b29
No known key found for this signature in database
GPG Key ID: 77AA882EC78084E6

View File

@ -155,6 +155,7 @@ static int client_send(char *addr_str, char *data, size_t datalen)
if (res < 0 && res != CREDMAN_EXIST) {
/* ignore duplicate credentials */
printf("Error cannot add credential to system: %" PRIdSIZE "\n", res);
sock_udp_close(&udp_sock);
return -1;
}
@ -171,12 +172,14 @@ static int client_send(char *addr_str, char *data, size_t datalen)
if (res < 0 && res != CREDMAN_EXIST) {
/* ignore duplicate credentials */
printf("Error cannot add credential to system: %" PRIdSIZE "\n", res);
sock_udp_close(&udp_sock);
return -1;
}
/* make the new credential available to the sock */
if (sock_dtls_add_credential(&dtls_sock, SOCK_DTLS_CLIENT_TAG_1) < 0) {
printf("Error cannot add credential to the sock: %" PRIdSIZE "\n", res);
sock_udp_close(&udp_sock);
return -1;
}
@ -186,6 +189,7 @@ static int client_send(char *addr_str, char *data, size_t datalen)
res = sock_dtls_session_init(&dtls_sock, &remote, &session);
if (res <= 0) {
sock_udp_close(&udp_sock);
return res;
}