mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
Merge branch 'main' into feat/eth-framework-independent
Brings in the coredump bounds fix (#74). Utils.h, Utils.cpp and test_utils.cpp conflicted only because both sides added helpers in the same spot; kept otaProven/releaseAssetName and formatBacktrace. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
2c1085ee9b
4 changed files with 53 additions and 7 deletions
|
|
@ -292,6 +292,35 @@ static void test_releaseAssetName_keeps_c3() {
|
|||
TEST_ASSERT_EQUAL_STRING("SomfyController.ino.esp32c3.bin", buf);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* formatBacktrace
|
||||
********************************************************************/
|
||||
static void test_formatBacktrace_frames_the_dump_holds() {
|
||||
const uint32_t bt[16] = {0x40083c19, 0x4008e42d, 0x00000011};
|
||||
char buf[256];
|
||||
formatBacktrace(buf, sizeof(buf), bt, 16, 3);
|
||||
TEST_ASSERT_EQUAL_STRING(" 0x40083c19 0x4008e42d 0x00000011", buf);
|
||||
}
|
||||
static void test_formatBacktrace_garbage_depth_stays_in_bounds() {
|
||||
// A half-written dump reads back as the 0xa5 stack fill: depth 0xa5a5a5a5.
|
||||
// setup() looped that many times and overran bt[] and its buffer.
|
||||
struct { uint32_t bt[16]; uint32_t depth; } summary;
|
||||
memset(&summary, 0xa5, sizeof(summary));
|
||||
struct { char buf[256]; char guard[16]; } out;
|
||||
memset(out.guard, 'G', sizeof(out.guard));
|
||||
formatBacktrace(out.buf, sizeof(out.buf), summary.bt, 16, summary.depth);
|
||||
TEST_ASSERT_EQUAL(16 * 11, strlen(out.buf));
|
||||
for (size_t i = 0; i < sizeof(out.guard); i++) TEST_ASSERT_EQUAL_CHAR('G', out.guard[i]);
|
||||
}
|
||||
static void test_formatBacktrace_stops_when_the_buffer_is_full() {
|
||||
const uint32_t bt[16] = {0};
|
||||
struct { char buf[30]; char guard[16]; } out;
|
||||
memset(out.guard, 'G', sizeof(out.guard));
|
||||
formatBacktrace(out.buf, sizeof(out.buf), bt, 16, 16);
|
||||
TEST_ASSERT_EQUAL(sizeof(out.buf) - 1, strlen(out.buf));
|
||||
for (size_t i = 0; i < sizeof(out.guard); i++) TEST_ASSERT_EQUAL_CHAR('G', out.guard[i]);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* wifiAuthModeName
|
||||
********************************************************************/
|
||||
|
|
@ -424,6 +453,9 @@ int main(int argc, char **argv) {
|
|||
RUN_TEST(test_otaProven_not_without_network);
|
||||
RUN_TEST(test_releaseAssetName_matches_the_release_workflow);
|
||||
RUN_TEST(test_releaseAssetName_keeps_c3);
|
||||
RUN_TEST(test_formatBacktrace_frames_the_dump_holds);
|
||||
RUN_TEST(test_formatBacktrace_garbage_depth_stays_in_bounds);
|
||||
RUN_TEST(test_formatBacktrace_stops_when_the_buffer_is_full);
|
||||
RUN_TEST(test_wifiAuthModeName_matches_the_idf_enum);
|
||||
RUN_TEST(test_wifiAuthModeName_unknown_past_the_shared_values);
|
||||
RUN_TEST(test_heapEmitTarget_one_client_always_gets_it);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue