diff --git a/freemodbus/common/esp_modbus_slave.c b/freemodbus/common/esp_modbus_slave.c index ba5c29b..24e2c59 100644 --- a/freemodbus/common/esp_modbus_slave.c +++ b/freemodbus/common/esp_modbus_slave.c @@ -69,7 +69,7 @@ static void mbc_slave_free_descriptors(void) { mb_slave_options_t* mbs_opts = &slave_interface_ptr->opts; for (int descr_type = 0; descr_type < MB_PARAM_COUNT; descr_type++) { - for (it = LIST_FIRST(&mbs_opts->mbs_area_descriptors[descr_type]); it != NULL; it = LIST_NEXT(it, entries)) { + while ((it = LIST_FIRST(&mbs_opts->mbs_area_descriptors[descr_type]))) { LIST_REMOVE(it, entries); free(it); } diff --git a/freemodbus/tcp_slave/port/port_tcp_slave.c b/freemodbus/tcp_slave/port/port_tcp_slave.c index bf7e997..c53aeac 100644 --- a/freemodbus/tcp_slave/port/port_tcp_slave.c +++ b/freemodbus/tcp_slave/port/port_tcp_slave.c @@ -205,6 +205,10 @@ static int xMBTCPPortAcceptConnection(int xListenSockId, char** pcIPAddr) inet6_ntoa_r(((struct sockaddr_in6 *)&xSrcAddr)->sin6_addr, cAddrStr, sizeof(cAddrStr) - 1); } #endif + else { + // Make sure ss_family is valid + abort(); + } ESP_LOGI(TAG, "Socket (#%d), accept client connection from address: %s", xSockId, cAddrStr); pcStr = calloc(1, strlen(cAddrStr) + 1); if (pcStr && pcIPAddr) { diff --git a/test/tcp/mb_tcp_master/main/tcp_master.c b/test/tcp/mb_tcp_master/main/tcp_master.c index 180a28b..0bbb0e4 100644 --- a/test/tcp/mb_tcp_master/main/tcp_master.c +++ b/test/tcp/mb_tcp_master/main/tcp_master.c @@ -429,7 +429,7 @@ static void master_destroy_slave_list(char** table, size_t ip_table_size) { #if CONFIG_MB_MDNS_IP_RESOLVER slave_addr_entry_t *it; - LIST_FOREACH(it, &slave_addr_list, entries) { + while ((it = LIST_FIRST(&slave_addr_list))) { LIST_REMOVE(it, entries); free(it); }