diff options
author | Skorpionm <85568270+Skorpionm@users.noreply.github.com> | 2022-04-07 14:47:47 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-07 14:47:47 +0300 |
commit | 02b9cf90d5cc54f1b7ba3d7950460a460769a56c (patch) | |
tree | 957d9a45821c388e426ccde30304b3eb2e0dde42 /applications/subghz/scenes | |
parent | 321f36d11377cf184ee3daeddbfb2a1daf9433ae (diff) |
[FL-2431, FL-2419] SubGhz: bugfixes (#1098)
* [FL-2431] SubGhz: fix Restart with an error (HardFault), while maintaining the RAW signal.
* Stream: fix adding maximum string length to arguments
* [FL-2419] SubGhz: fix flipper hang/Fatal Error when running edited Sub-GHz file.
* SubGhz: remove replace strcpy with strncpy, smaller text buffer and canary
* SubGhz: log key loading before load happen, rollback only rx message handling
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Diffstat (limited to 'applications/subghz/scenes')
4 files changed, 7 insertions, 7 deletions
diff --git a/applications/subghz/scenes/subghz_scene_delete.c b/applications/subghz/scenes/subghz_scene_delete.c index fa020648..dee16114 100644 --- a/applications/subghz/scenes/subghz_scene_delete.c +++ b/applications/subghz/scenes/subghz_scene_delete.c @@ -49,7 +49,7 @@ bool subghz_scene_delete_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; if(event.type == SceneManagerEventTypeCustom) { if(event.event == SubGhzCustomEventSceneDelete) { - strcpy(subghz->file_name_tmp, subghz->file_name); + strncpy(subghz->file_name_tmp, subghz->file_name, SUBGHZ_MAX_LEN_NAME); if(subghz_delete_file(subghz)) { scene_manager_next_scene(subghz->scene_manager, SubGhzSceneDeleteSuccess); } else { diff --git a/applications/subghz/scenes/subghz_scene_delete_raw.c b/applications/subghz/scenes/subghz_scene_delete_raw.c index 74ad75ce..df57926c 100644 --- a/applications/subghz/scenes/subghz_scene_delete_raw.c +++ b/applications/subghz/scenes/subghz_scene_delete_raw.c @@ -56,7 +56,7 @@ bool subghz_scene_delete_raw_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; if(event.type == SceneManagerEventTypeCustom) { if(event.event == SubGhzCustomEventSceneDeleteRAW) { - strcpy(subghz->file_name_tmp, subghz->file_name); + strncpy(subghz->file_name_tmp, subghz->file_name, SUBGHZ_MAX_LEN_NAME); if(subghz_delete_file(subghz)) { scene_manager_next_scene(subghz->scene_manager, SubGhzSceneDeleteSuccess); } else { diff --git a/applications/subghz/scenes/subghz_scene_read_raw.c b/applications/subghz/scenes/subghz_scene_read_raw.c index 67e4df8f..d50d5626 100644 --- a/applications/subghz/scenes/subghz_scene_read_raw.c +++ b/applications/subghz/scenes/subghz_scene_read_raw.c @@ -24,7 +24,7 @@ bool subghz_scene_read_raw_update_filename(SubGhz* subghz) { } path_extract_filename_no_ext(string_get_cstr(temp_str), temp_str); - strcpy(subghz->file_name, string_get_cstr(temp_str)); + strncpy(subghz->file_name, string_get_cstr(temp_str), SUBGHZ_MAX_LEN_NAME); ret = true; } while(false); diff --git a/applications/subghz/scenes/subghz_scene_save_name.c b/applications/subghz/scenes/subghz_scene_save_name.c index 6f552ff9..0edee9ee 100644 --- a/applications/subghz/scenes/subghz_scene_save_name.c +++ b/applications/subghz/scenes/subghz_scene_save_name.c @@ -22,10 +22,10 @@ void subghz_scene_save_name_on_enter(void* context) { //highlighting the entire filename by default dev_name_empty = true; } else { - strcpy(subghz->file_name_tmp, subghz->file_name); + strncpy(subghz->file_name_tmp, subghz->file_name, SUBGHZ_MAX_LEN_NAME); if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW) != SubGhzCustomEventManagerNoSet) { - subghz_get_next_name_file(subghz); + subghz_get_next_name_file(subghz, SUBGHZ_MAX_LEN_NAME); if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW) == SubGhzCustomEventManagerSetRAW) { dev_name_empty = true; @@ -39,7 +39,7 @@ void subghz_scene_save_name_on_enter(void* context) { subghz_scene_save_name_text_input_callback, subghz, subghz->file_name, - 22, //Max len name + SUBGHZ_MAX_LEN_NAME + 1, // buffer size dev_name_empty); ValidatorIsFile* validator_is_file = @@ -52,7 +52,7 @@ void subghz_scene_save_name_on_enter(void* context) { bool subghz_scene_save_name_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; if(event.type == SceneManagerEventTypeBack) { - strcpy(subghz->file_name, subghz->file_name_tmp); + strncpy(subghz->file_name, subghz->file_name_tmp, SUBGHZ_MAX_LEN_NAME); scene_manager_previous_scene(subghz->scene_manager); return true; } else if(event.type == SceneManagerEventTypeCustom) { |