add GPS interval validation and bounds checking

This commit is contained in:
csrutil
2025-11-29 17:29:59 +08:00
parent 88fb173297
commit 678915ef3b

View File

@@ -779,6 +779,7 @@ void MyMesh::begin(bool has_display) {
_prefs.cr = constrain(_prefs.cr, 5, 8); _prefs.cr = constrain(_prefs.cr, 5, 8);
_prefs.tx_power_dbm = constrain(_prefs.tx_power_dbm, 1, MAX_LORA_TX_POWER); _prefs.tx_power_dbm = constrain(_prefs.tx_power_dbm, 1, MAX_LORA_TX_POWER);
_prefs.gps_enabled = constrain(_prefs.gps_enabled, 0, 1); // Ensure boolean 0 or 1 _prefs.gps_enabled = constrain(_prefs.gps_enabled, 0, 1); // Ensure boolean 0 or 1
_prefs.gps_interval = constrain(_prefs.gps_interval, 0, 86400); // Max 24 hours
#ifdef BLE_PIN_CODE // 123456 by default #ifdef BLE_PIN_CODE // 123456 by default
if (_prefs.ble_pin == 0) { if (_prefs.ble_pin == 0) {
@@ -809,9 +810,11 @@ void MyMesh::begin(bool has_display) {
#if ENV_INCLUDE_GPS == 1 #if ENV_INCLUDE_GPS == 1
sensors.setSettingValue("gps", _prefs.gps_enabled ? "1" : "0"); sensors.setSettingValue("gps", _prefs.gps_enabled ? "1" : "0");
char interval_str[12]; // Max: 24 hours = 86400 seconds (5 digits + null) if (_prefs.gps_interval > 0) {
sprintf(interval_str, "%u", _prefs.gps_interval); char interval_str[12]; // Max: 24 hours = 86400 seconds (5 digits + null)
sensors.setSettingValue("gps_interval", interval_str); sprintf(interval_str, "%u", _prefs.gps_interval);
sensors.setSettingValue("gps_interval", interval_str);
}
#endif #endif
} }