kopia lustrzana https://github.com/Aircoookie/WLED
Add validation for JSON field values.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>pull/4772/head
rodzic
be08a473dd
commit
8d696f3261
|
@ -96,11 +96,31 @@ bool loadSchedule() {
|
||||||
for (JsonObject e : doc.as<JsonArray>()) {
|
for (JsonObject e : doc.as<JsonArray>()) {
|
||||||
if (numScheduleEvents >= MAX_SCHEDULE_EVENTS) break;
|
if (numScheduleEvents >= MAX_SCHEDULE_EVENTS) break;
|
||||||
|
|
||||||
|
// Extract and validate JSON fields before assignment
|
||||||
|
int sm = e["sm"].as<int>();
|
||||||
|
int sd = e["sd"].as<int>();
|
||||||
|
int em = e["em"].as<int>();
|
||||||
|
int ed = e["ed"].as<int>();
|
||||||
|
int r = e["r"].as<int>();
|
||||||
|
int h = e["h"].as<int>();
|
||||||
|
int m = e["m"].as<int>();
|
||||||
|
int p = e["p"].as<int>();
|
||||||
|
|
||||||
|
// Validate ranges: months 1–12, days 1–31, hours 0–23, minutes 0–59,
|
||||||
|
// repeat mask 0–127, preset ID 1–250
|
||||||
|
if (sm < 1 || sm > 12 || em < 1 || em > 12 ||
|
||||||
|
sd < 1 || sd > 31 || ed < 1 || ed > 31 ||
|
||||||
|
h < 0 || h > 23 || m < 0 || m > 59 ||
|
||||||
|
r < 0 || r > 127|| p < 1 || p > 250) {
|
||||||
|
DEBUG_PRINTF_P(PSTR("[Schedule] Invalid values in event %u, skipping\n"), numScheduleEvents);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
scheduleEvents[numScheduleEvents++] = {
|
scheduleEvents[numScheduleEvents++] = {
|
||||||
(uint8_t)e["sm"].as<int>(), (uint8_t)e["sd"].as<int>(), // start month, day
|
(uint8_t)sm, (uint8_t)sd,
|
||||||
(uint8_t)e["em"].as<int>(), (uint8_t)e["ed"].as<int>(), // end month, day
|
(uint8_t)em, (uint8_t)ed,
|
||||||
(uint8_t)e["r"].as<int>(), (uint8_t)e["h"].as<int>(), // repeat mask, hour
|
(uint8_t)r, (uint8_t)h,
|
||||||
(uint8_t)e["m"].as<int>(), (uint8_t)e["p"].as<int>() // minute, preset
|
(uint8_t)m, (uint8_t)p
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue