mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-07 13:41:18 -07:00
Fixes a double-free issue in CloseProxmark: (#617)
- CloseProxmark now clears global state. - CloseProxmark now checks for a non-null serial_port before calling uart_close, to avoid unintentional double-free'ing serial_port. - main now calls CloseProxmark once.
This commit is contained in:
parent
ad939de501
commit
2bb7f7e327
2 changed files with 9 additions and 5 deletions
|
@ -334,13 +334,21 @@ bool OpenProxmark(void *port, bool wait_for_port, int timeout, bool flash_mode)
|
|||
void CloseProxmark(void) {
|
||||
conn.run = false;
|
||||
pthread_join(USB_communication_thread, NULL);
|
||||
uart_close(sp);
|
||||
|
||||
if (sp) {
|
||||
uart_close(sp);
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
// Fix for linux, it seems that it is extremely slow to release the serial port file descriptor /dev/*
|
||||
if (serial_port_name) {
|
||||
unlink(serial_port_name);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Clean up our state
|
||||
sp = NULL;
|
||||
serial_port_name = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -131,10 +131,6 @@ main_loop(char *script_cmds_file, char *script_cmd, bool usb_present) {
|
|||
}
|
||||
|
||||
write_history(".history");
|
||||
|
||||
if (usb_present) {
|
||||
CloseProxmark();
|
||||
}
|
||||
|
||||
if (script_file) {
|
||||
fclose(script_file);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue