Skip to content

Commit 9ed93a5

Browse files
committed
fix(wifi_analyzer): improve memory management in summary handling
1 parent e0fb132 commit 9ed93a5

2 files changed

Lines changed: 25 additions & 13 deletions

File tree

firmware/main/apps/wifi/captive/captive_module.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,8 @@ static uint16_t captive_module_get_sd_portals() {
629629
if (!ext || strcmp(ext, ".html") != 0) {
630630
continue;
631631
}
632-
portals_list.ent[portals_list.count] = (char*) malloc(strlen(ent->d_name) + 1);
632+
portals_list.ent[portals_list.count] =
633+
(char*) malloc(strlen(ent->d_name) + 1);
633634
if (!portals_list.ent[portals_list.count]) {
634635
ESP_LOGE("CAPTIVE", "Failed to allocate memory for dirent name");
635636
continue;

firmware/main/apps/wifi_analyzer/wifi_analyzer.c

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,15 @@ static char* wifi_analizer_summary_2[120] = {
3131
"Summary",
3232
};
3333

34+
static void wifi_analizer_free_summary(void) {
35+
for (uint8_t i = 1; i < 120; i++) {
36+
if (wifi_analizer_summary_2[i] != NULL) {
37+
free(wifi_analizer_summary_2[i]);
38+
wifi_analizer_summary_2[i] = NULL;
39+
}
40+
}
41+
}
42+
3443
static void wifi_module_input_cb(uint8_t button_name, uint8_t button_event);
3544
static void wifi_module_summary_exit_cb();
3645

@@ -113,6 +122,7 @@ static void wifi_module_summary_exit_cb() {
113122
if (analizer_initialized) {
114123
wifi_sniffer_close_file();
115124
}
125+
wifi_analizer_free_summary();
116126
analyzer_scenes_main_menu();
117127
}
118128

@@ -179,6 +189,7 @@ void wifi_module_analizer_summary_cb(FILE* pcap_file) {
179189
esp_err_t ret = ESP_OK;
180190
long size = pcap_cmd_get_file_size(pcap_file);
181191
char* packet_payload = NULL;
192+
wifi_analizer_free_summary();
182193
// packet index (by bytes)
183194
uint32_t index = 0;
184195
pcap_file_header_t file_header;
@@ -202,13 +213,13 @@ void wifi_module_analizer_summary_cb(FILE* pcap_file) {
202213

203214
// Load header information
204215
uint32_t summary_index = 1; // Skip scroll text flag and Summary title
205-
wifi_analizer_summary_2[summary_index++] = "----------------";
206-
wifi_analizer_summary_2[summary_index++] = "Magic Number:";
216+
wifi_analizer_summary_2[summary_index++] = strdup("----------------");
217+
wifi_analizer_summary_2[summary_index++] = strdup("Magic Number:");
207218
wifi_analizer_summary_2[summary_index++] = magic_number_str;
208219
wifi_analizer_summary_2[summary_index++] = major_version_str;
209220
wifi_analizer_summary_2[summary_index++] = snaplen_str;
210221
wifi_analizer_summary_2[summary_index++] = link_type_str;
211-
wifi_analizer_summary_2[summary_index++] = "----------------";
222+
wifi_analizer_summary_2[summary_index++] = strdup("----------------");
212223

213224
uint32_t packet_num = 0;
214225
pcap_packet_header_t packet_header;
@@ -269,7 +280,7 @@ void wifi_module_analizer_summary_cb(FILE* pcap_file) {
269280
snprintf(bssid_str2, 32, " %2X:%2X:%2X", packet_payload[19],
270281
packet_payload[20], packet_payload[21]);
271282

272-
wifi_analizer_summary_2[summary_index++] = "SSID:";
283+
wifi_analizer_summary_2[summary_index++] = strdup("SSID:");
273284
wifi_analizer_summary_2[summary_index++] = ssid_str;
274285
wifi_analizer_summary_2[summary_index++] = channel_str;
275286
wifi_analizer_summary_2[summary_index++] = bssid_str;
@@ -297,17 +308,17 @@ void wifi_module_analizer_summary_cb(FILE* pcap_file) {
297308

298309
wifi_analizer_summary_2[summary_index++] = frame_type_str;
299310
wifi_analizer_summary_2[summary_index++] = frame_subtype_str;
300-
wifi_analizer_summary_2[summary_index++] = "Destination:";
311+
wifi_analizer_summary_2[summary_index++] = strdup("Destination:");
301312
wifi_analizer_summary_2[summary_index++] = destination_str;
302313
wifi_analizer_summary_2[summary_index++] = destination_str2;
303314
wifi_analizer_summary_2[summary_index++] = source_str;
304315
wifi_analizer_summary_2[summary_index++] = source_str2;
305316

306-
wifi_analizer_summary_2[summary_index++] = "----------------";
317+
wifi_analizer_summary_2[summary_index++] = strdup("----------------");
307318
} else {
308319
char* link_type_str = malloc(32);
309320
snprintf(link_type_str, 32, "Link Type: %" PRIu32, file_header.link_type);
310-
wifi_analizer_summary_2[summary_index++] = "Unknown link type";
321+
wifi_analizer_summary_2[summary_index++] = strdup("Unknown link type");
311322
wifi_analizer_summary_2[summary_index++] = link_type_str;
312323
}
313324
free(packet_payload);
@@ -317,12 +328,12 @@ void wifi_module_analizer_summary_cb(FILE* pcap_file) {
317328
}
318329

319330
if (packet_num > 0) {
320-
wifi_analizer_summary_2[summary_index++] = "Open the pcap";
321-
wifi_analizer_summary_2[summary_index++] = "file in";
322-
wifi_analizer_summary_2[summary_index++] = "Wireshark to see";
323-
wifi_analizer_summary_2[summary_index++] = "more.";
331+
wifi_analizer_summary_2[summary_index++] = strdup("Open the pcap");
332+
wifi_analizer_summary_2[summary_index++] = strdup("file in");
333+
wifi_analizer_summary_2[summary_index++] = strdup("Wireshark to see");
334+
wifi_analizer_summary_2[summary_index++] = strdup("more.");
324335
} else {
325-
wifi_analizer_summary_2[summary_index++] = "No packets found";
336+
wifi_analizer_summary_2[summary_index++] = strdup("No packets found");
326337
}
327338

328339
wifi_analizer_summary_2[summary_index++] = NULL;

0 commit comments

Comments
 (0)