From cd4c8e3ce69cd69c25d7b55110533069d1eba095 Mon Sep 17 00:00:00 2001 From: Jakub <106778416+MarekZegare4@users.noreply.github.com> Date: Sun, 7 Jun 2026 16:13:16 +0200 Subject: [PATCH] fix(DataStore): clamp notif_melody_dm/ch to valid range [0-3] After PR #16 added None (slot=3) to melody options, only notif_melody_ad had a bounds check. Add matching clamps for dm and ch to prevent stray bytes from an older prefs file triggering buildMelodyFromPrefs with an out-of-range slot. Co-Authored-By: Claude Sonnet 4.6 --- examples/companion_radio/DataStore.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/companion_radio/DataStore.cpp b/examples/companion_radio/DataStore.cpp index 644d2b41..ae1531df 100644 --- a/examples/companion_radio/DataStore.cpp +++ b/examples/companion_radio/DataStore.cpp @@ -285,7 +285,9 @@ void DataStore::loadPrefsInt(const char *filename, NodePrefs& _prefs, double& no if (_prefs.ringtone2_len > 32) _prefs.ringtone2_len = 0; rd(_prefs.ringtone2_notes, sizeof(_prefs.ringtone2_notes)); rd(&_prefs.notif_melody_dm, sizeof(_prefs.notif_melody_dm)); + if (_prefs.notif_melody_dm > 3) _prefs.notif_melody_dm = 0; rd(&_prefs.notif_melody_ch, sizeof(_prefs.notif_melody_ch)); + if (_prefs.notif_melody_ch > 3) _prefs.notif_melody_ch = 0; rd(&_prefs.ch_notif_melody_set, sizeof(_prefs.ch_notif_melody_set)); rd(&_prefs.ch_notif_melody_2, sizeof(_prefs.ch_notif_melody_2)); rd(_prefs.dm_melody, sizeof(_prefs.dm_melody));