1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-27 02:05:16 +03:00

memcpy overflow

This commit is contained in:
Bertrand Songis 2019-02-06 12:48:03 +01:00
parent 21552e8899
commit 05e89a6a45

View file

@ -1113,29 +1113,26 @@ void menuModelSetup(event_t event)
case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_BIND: case ITEM_MODEL_INTERNAL_MODULE_RECEIVER_2_BIND:
{ {
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k); uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
lcdDrawTextAlignedLeft(y, INDENT "Receiver"); lcdDrawTextAlignedLeft(y, INDENT "Receiver");
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_BIND, menuHorizontalPosition==0 ? attr : 0); lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_BIND, menuHorizontalPosition==0 ? attr : 0);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS, y, STR_DEL_BUTTON, menuHorizontalPosition==1 ? attr : 0); lcdDrawText(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS, y, STR_DEL_BUTTON, menuHorizontalPosition==1 ? attr : 0);
if (attr && menuHorizontalPosition == 0) { if (attr) {
if (s_editMode > 0) { if (menuHorizontalPosition == 0) {
if (BLINK_ON_PHASE) if (event == EVT_KEY_BREAK(KEY_ENTER)) {
moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_BIND; moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND;
else }
moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_REGISTER; s_editMode = (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_BIND);
} }
else else if (menuHorizontalPosition == 1 && s_editMode > 0) {
moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_NORMAL; if (receiverIdx == 0) {
} memcpy(&g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[0],
if (attr && menuHorizontalPosition == 1 && s_editMode > 0) { &g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[1], sizeof(ReceiverData));
if(receiverIdx == 0) { memclear(&g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[1], sizeof(ReceiverData));
memcpy(&g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[0], &g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[1], sizeof(g_model.moduleData[INTERNAL_MODULE].pxx2.receivers)); s_editMode = 0;
memclear(&g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[1], sizeof(g_model.moduleData[INTERNAL_MODULE].pxx2.receivers)); } else {
s_editMode = 0; memclear(&g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[receiverIdx], sizeof(ReceiverData));
} s_editMode = 0;
else { }
memclear(&g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[receiverIdx], sizeof(g_model.moduleData[INTERNAL_MODULE].pxx2.receivers));
s_editMode = 0;
} }
} }
} }