Commit Graph
23587 Commits
Author SHA1 Message Date
J. Nick Koston a40c87eeed [dashboard] Use resolve/relative_to for download path validation
Replace string-based path sanitization (.replace/.lstrip) with
Path.resolve() and relative_to() validation, matching the
pattern used by other dashboard endpoints (e.g. settings.rel_path).

The previous approach was not exploitable but was inconsistent
with the rest of the codebase.
2026-02-08 06:48:38 -06:00
J. Nick Koston 2829f7b485 [dashboard] Handle malformed Basic Auth headers gracefully
Wrap base64 decode and split in try/except so malformed
Authorization headers return a clean 401 instead of an
unhandled exception producing a 500 response with stack
trace in logs.

Catches ValueError (covers binascii.Error from b64decode)
and UnicodeDecodeError (from .decode()).
2026-02-08 06:47:49 -06:00
J. Nick Koston 79a205eee2 [dashboard] Use constant-time comparison for username check
Use hmac.compare_digest() for the username comparison to match
the existing constant-time password comparison. This prevents
username enumeration via timing analysis.
2026-02-08 06:46:28 -06:00
J. Nick Koston e039676422 [wizard] Use secrets module for fallback AP password generation
Replace random.choice() with secrets.choice() for generating
the fallback hotspot password. The random module uses Mersenne
Twister which is not cryptographically secure. The secrets
module is the correct choice for credential generation.

The file already imports secrets for other credential generation.
2026-02-08 06:44:45 -06:00
Tomasz Duda 82eb4538af [nrf52,logger] add support for task_log_buffer_size 2026-02-08 13:40:39 +01:00
J. Nick Koston 9616596146 [ota] Use secrets module for OTA authentication cnonce
Replace random.random() with secrets.token_hex() for generating
the client nonce in OTA challenge-response authentication.

The random module uses Mersenne Twister which is not
cryptographically secure. The secrets module is the correct
choice for security-sensitive token generation.
2026-02-08 06:40:30 -06:00
J. Nick Koston ad546edbb7 fix 2026-02-08 03:31:06 -06:00
J. Nick Koston a07b429510 Merge branch 'hlk_fm22x_eliminate_heap_alloc' into integration 2026-02-08 03:28:50 -06:00
J. Nick Koston 94d6ca22b2 Merge branch 'voice-assistant-timer-vector' into integration 2026-02-08 03:28:43 -06:00
J. Nick Koston 78f98fa08f [hlk_fm22x] Drain exact frame bytes on oversize response
Discard exactly length+1 (payload + checksum) instead of flushing
the entire RX buffer, which could eat bytes from the next frame.
2026-02-08 02:51:27 -06:00
J. Nick Koston eb3bad823b [hlk_fm22x] Reword comment to avoid lint false positive on 'byte' 2026-02-08 02:40:04 -06:00
J. Nick Koston 5374252470 [hlk_fm22x] Add bounds checks and fix format specifiers
- Flush UART RX buffer when response exceeds max size
- Guard handle_note_ against zero-length data
- Guard handle_reply_ against length < 2
- Validate VERIFY response has full name payload before access
- Guard GET_VERSION against length underflow
- Cast %.*s precision to int, use %zu for size_t
- Improve MAX_RESPONSE_SIZE comment with payload layout
2026-02-08 02:38:40 -06:00
J. Nick Koston f7630075ff Fix Trigger/Automation type mismatch for timer_tick_trigger_ 2026-02-08 02:32:03 -06:00
J. Nick Koston 8677f3db03 Add timer automation tests for voice_assistant 2026-02-08 02:27:23 -06:00
J. Nick Koston 9add30b900 Pass timer tick vector as const ref through automation to avoid copy 2026-02-08 02:26:22 -06:00
J. Nick Koston 2e50651400 [hlk_fm22x] Replace per-cycle vector allocation with member buffer
Replace std::vector<uint8_t> in recv_command_() with a member
std::array<uint8_t, 36> buffer to eliminate heap allocation on
every polling cycle. Also use pointer+length instead of vector
references in handle_note_/handle_reply_, and use TextSensor's
publish_state(const char*, size_t) overload to avoid temporary
std::string construction for version and face name publishing.
2026-02-08 02:17:22 -06:00
J. Nick Koston bfee24421a Merge branch 'voice-assistant-timer-vector' into integration 2026-02-08 02:07:34 -06:00
J. Nick Koston 86fee6e4af [voice_assistant] Replace timer unordered_map with vector to eliminate per-tick heap allocation 2026-02-08 02:02:55 -06:00
J. Nick Koston 48ea97139e Merge branch 'web_server_idf_namespace' into integration 2026-02-08 01:47:01 -06:00
J. Nick Koston 67fbd31e46 [web_server_idf] Use C++17 nested namespace style 2026-02-08 01:45:22 -06:00
schrob 7b40e8afcb [epaper_spi] Declare leaf classes final (#13776) 2026-02-07 19:21:37 -06:00
J. Nick Koston d73384ae46 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 19:07:15 -06:00
J. Nick Koston 456e0f2679 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:37:32 -06:00
J. Nick Koston 852efb06a8 Merge remote-tracking branch 'origin/libretiny_1120' into integration 2026-02-07 18:33:46 -06:00
J. Nick Koston 1b1efc5d49 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:28:28 -06:00
J. Nick Koston 67bfbee567 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:23:59 -06:00
J. Nick Koston 3deea03ff5 revert this after https://github.com/libretiny-eu/libretiny/pull/361 2026-02-07 18:19:08 -06:00
J. Nick Koston c139aff8d9 Merge remote-tracking branch 'upstream/libretiny_1120' into integration 2026-02-07 18:05:38 -06:00
J. Nick Koston 98f900183d update boards as well 2026-02-07 18:04:41 -06:00
J. Nick Koston 059087ed21 [libretiny] Update LibreTiny to v1.12.0 2026-02-07 18:01:52 -06:00
J. Nick Koston d3778af3e8 [libretiny] Update LibreTiny to v1.12.0 2026-02-07 18:01:19 -06:00
J. Nick Koston 663151821f Merge branch 'cswitch_sdk' into integration 2026-02-07 18:00:55 -06:00
J. Nick Koston 8c4a732eb7 copilot edge cases 2026-02-07 18:00:30 -06:00
J. Nick Koston 2d0b1db3dd Merge branch 'cswitch_sdk' into integration 2026-02-07 17:53:31 -06:00
J. Nick Koston 4e3ccb4fc5 [analyze-memory] Attribute CSWTCH symbols from SDK archives 2026-02-07 17:52:20 -06:00
J. Nick Koston 66ab62b3fb Merge branch 'deprecate_set_retry' into integration 2026-02-07 17:26:28 -06:00
J. Nick Koston 2a6e20dd32 [core] Deprecate set_retry, cancel_retry, and RetryResult
set_retry does a std::make_shared<RetryArgs>() heap allocation on every
invocation. No core component needs this pattern - all callers have been
migrated to set_timeout or set_interval in prior PRs. The feature wastes
flash and RAM on every firmware for a pattern that set_interval covers
better, and the hidden heap allocation is a footgun for component authors.

Deprecated in 2026.2.0, removal in 2026.8.0.

Depends on:
- #13841 [lps22] Replace set_retry with set_interval
- #13842 [ms8607] Replace set_retry with set_timeout chain
- #13843 [speaker] Replace set_retry with set_interval
- #13844 [esp32_hosted] Replace set_retry with set_interval
2026-02-07 17:25:59 -06:00
J. Nick Koston 7516e418f2 Merge branch 'ms8607_remove_set_retry' into integration 2026-02-07 17:23:25 -06:00
J. Nick Koston 3864f06a15 Merge branch 'esp32_hosted_remove_set_retry' into integration 2026-02-07 17:23:21 -06:00
J. Nick Koston 98dcea6e7d Merge branch 'speaker_media_player_remove_set_retry' into integration 2026-02-07 17:23:15 -06:00
J. Nick Koston 9ee51b06fa Merge branch 'deprecate_set_retry' into integration 2026-02-07 17:23:12 -06:00
J. Nick Koston 4efca40457 Merge branch 'lps22_remove_set_retry' into integration 2026-02-07 17:23:06 -06:00
J. Nick Koston a43e3e5948 [dashboard] Close WebSocket after process exit to prevent zombie connections (#13834) 2026-02-07 15:19:20 -06:00
J. Nick Koston f64f71b9ac Merge remote-tracking branch 'upstream/dev' into integration 2026-02-07 15:13:45 -06:00
J. Nick Koston 60298f67b8 [ms8607] Replace set_retry with set_timeout chain to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with a try_reset_() method that chains
set_timeout calls with manual backoff, preserving the same timing
(immediate, +5ms, +25ms).
2026-02-07 14:53:18 -06:00
J. Nick Koston 4d2354da2e [esp32_hosted] Replace set_retry with set_interval to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with set_interval + countdown counter which
avoids this entirely. The original code used fixed-interval polling
(no backoff), making set_interval a direct fit.
2026-02-07 14:51:45 -06:00
J. Nick Koston 6a3da67a1e [speaker] Replace set_retry with set_interval to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with set_interval + countdown counter which
avoids this entirely. All 3 call sites used fixed-interval polling
(no backoff), making set_interval a direct fit.
2026-02-07 14:48:34 -06:00
J. Nick Koston 6ebafa8a9e [core] Deprecate set_retry, cancel_retry, and RetryResult
set_retry does a std::make_shared<RetryArgs>() heap allocation on every
invocation. No core component needs this pattern - all callers have been
migrated to set_timeout or set_interval in prior PRs. The feature wastes
flash and RAM on every firmware for a pattern that set_interval covers
better, and the hidden heap allocation is a footgun for component authors.

Deprecated in 2026.2.0, removal in 2026.8.0.

Depends on:
- #13841 [lps22] Replace set_retry with set_interval
- #13842 [ms8607] Replace set_retry with set_timeout chain
- #13843 [speaker] Replace set_retry with set_interval
- #13844 [esp32_hosted] Replace set_retry with set_interval
2026-02-07 14:44:09 -06:00
J. Nick Koston 3ba7e48615 [lps22] Replace set_retry with set_interval to avoid heap allocation
set_retry internally does a std::make_shared<RetryArgs>() heap allocation
on every invocation. Replace with set_interval + countdown counter which
avoids this entirely.
2026-02-07 14:27:10 -06:00
schrob 9de91539e6 [epaper_spi] Add Waveshare 1.54-G (#13758) 2026-02-08 06:24:57 +11:00