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