diff --git a/applications/main/bad_kb/bad_kb_app.c b/applications/main/bad_kb/bad_kb_app.c index 5459fef10..084683468 100644 --- a/applications/main/bad_kb/bad_kb_app.c +++ b/applications/main/bad_kb/bad_kb_app.c @@ -46,7 +46,7 @@ static void bad_kb_load_settings(BadKbApp* app) { furi_string_reset(app->keyboard_layout); } if(flipper_format_read_string(file, "Bt_Name", tmp_str) && !furi_string_empty(tmp_str)) { - strcpy(cfg->bt_name, furi_string_get_cstr(tmp_str)); + strlcpy(cfg->bt_name, furi_string_get_cstr(tmp_str), BAD_KB_NAME_LEN); } else { strcpy(cfg->bt_name, ""); } @@ -54,13 +54,13 @@ static void bad_kb_load_settings(BadKbApp* app) { memcpy(cfg->bt_mac, BAD_KB_EMPTY_MAC, BAD_KB_MAC_LEN); } if(flipper_format_read_string(file, "Usb_Manuf", tmp_str) && !furi_string_empty(tmp_str)) { - strcpy(cfg->usb_cfg.manuf, furi_string_get_cstr(tmp_str)); + strlcpy(cfg->usb_cfg.manuf, furi_string_get_cstr(tmp_str), BAD_KB_USB_LEN); } else { strcpy(cfg->usb_cfg.manuf, ""); } if(flipper_format_read_string(file, "Usb_Product", tmp_str) && !furi_string_empty(tmp_str)) { - strcpy(cfg->usb_cfg.product, furi_string_get_cstr(tmp_str)); + strlcpy(cfg->usb_cfg.product, furi_string_get_cstr(tmp_str), BAD_KB_USB_LEN); } else { strcpy(cfg->usb_cfg.product, ""); } diff --git a/applications/main/bad_kb/helpers/ducky_script.h b/applications/main/bad_kb/helpers/ducky_script.h index 23f225ab7..89b72bf99 100644 --- a/applications/main/bad_kb/helpers/ducky_script.h +++ b/applications/main/bad_kb/helpers/ducky_script.h @@ -105,6 +105,7 @@ BadKbState* bad_kb_script_get_state(BadKbScript* bad_kb); #define BAD_KB_NAME_LEN FURI_HAL_BT_ADV_NAME_LENGTH #define BAD_KB_MAC_LEN GAP_MAC_ADDR_SIZE +#define BAD_KB_USB_LEN HID_MANUF_PRODUCT_NAME_LEN extern const uint8_t BAD_KB_EMPTY_MAC[BAD_KB_MAC_LEN]; extern uint8_t BAD_KB_BOUND_MAC[BAD_KB_MAC_LEN]; // For remember mode @@ -137,7 +138,7 @@ struct BadKbApp { VariableItemList* var_item_list; TextInput* text_input; ByteInput* byte_input; - char usb_name_buf[32]; + char usb_name_buf[BAD_KB_USB_LEN]; uint16_t usb_vidpid_buf[2]; char bt_name_buf[BAD_KB_NAME_LEN]; uint8_t bt_mac_buf[BAD_KB_MAC_LEN]; diff --git a/applications/main/bad_kb/scenes/bad_kb_scene_config_usb_name.c b/applications/main/bad_kb/scenes/bad_kb_scene_config_usb_name.c index 250a3fde7..381c2cdf0 100644 --- a/applications/main/bad_kb/scenes/bad_kb_scene_config_usb_name.c +++ b/applications/main/bad_kb/scenes/bad_kb_scene_config_usb_name.c @@ -11,10 +11,10 @@ void bad_kb_scene_config_usb_name_on_enter(void* context) { TextInput* text_input = bad_kb->text_input; if(scene_manager_get_scene_state(bad_kb->scene_manager, BadKbSceneConfigUsbName)) { - strlcpy(bad_kb->usb_name_buf, bad_kb->config.usb_cfg.manuf, 32); + strlcpy(bad_kb->usb_name_buf, bad_kb->config.usb_cfg.manuf, BAD_KB_USB_LEN); text_input_set_header_text(text_input, "Set USB manufacturer name"); } else { - strlcpy(bad_kb->usb_name_buf, bad_kb->config.usb_cfg.product, 32); + strlcpy(bad_kb->usb_name_buf, bad_kb->config.usb_cfg.product, BAD_KB_USB_LEN); text_input_set_header_text(text_input, "Set USB product name"); } @@ -23,7 +23,7 @@ void bad_kb_scene_config_usb_name_on_enter(void* context) { bad_kb_scene_config_usb_name_text_input_callback, bad_kb, bad_kb->usb_name_buf, - 32, + BAD_KB_USB_LEN, true); view_dispatcher_switch_to_view(bad_kb->view_dispatcher, BadKbAppViewTextInput); @@ -37,9 +37,9 @@ bool bad_kb_scene_config_usb_name_on_event(void* context, SceneManagerEvent even consumed = true; if(event.event == BadKbAppCustomEventTextInputDone) { if(scene_manager_get_scene_state(bad_kb->scene_manager, BadKbSceneConfigUsbName)) { - strlcpy(bad_kb->config.usb_cfg.manuf, bad_kb->usb_name_buf, 32); + strlcpy(bad_kb->config.usb_cfg.manuf, bad_kb->usb_name_buf, BAD_KB_USB_LEN); } else { - strlcpy(bad_kb->config.usb_cfg.product, bad_kb->usb_name_buf, 32); + strlcpy(bad_kb->config.usb_cfg.product, bad_kb->usb_name_buf, BAD_KB_USB_LEN); } bad_kb_config_refresh(bad_kb); } diff --git a/firmware/targets/furi_hal_include/furi_hal_usb_hid.h b/firmware/targets/furi_hal_include/furi_hal_usb_hid.h index fe2486ceb..887f81617 100644 --- a/firmware/targets/furi_hal_include/furi_hal_usb_hid.h +++ b/firmware/targets/furi_hal_include/furi_hal_usb_hid.h @@ -9,6 +9,8 @@ extern "C" { #endif +#define HID_MANUF_PRODUCT_NAME_LEN 32 + #define HID_VID_DEFAULT 0x046D #define HID_PID_DEFAULT 0xC529 @@ -167,8 +169,8 @@ typedef struct { // Good job knobheads, these should be uint16_t uint32_t vid; uint32_t pid; - char manuf[32]; - char product[32]; + char manuf[HID_MANUF_PRODUCT_NAME_LEN]; + char product[HID_MANUF_PRODUCT_NAME_LEN]; } FuriHalUsbHidConfig; typedef void (*HidStateCallback)(bool state, void* context);