From 37d645474a713d6282b79245bc4e10401f32dd2f Mon Sep 17 00:00:00 2001 From: crispyberry Date: Fri, 6 Feb 2026 23:04:09 +0800 Subject: [PATCH] fix: heap-allocate memory_read buffer to prevent stack overflow CLI task stack is 4KB; the 4096-byte stack buffer in cmd_memory_read was overflowing and corrupting the heap. Use malloc instead. Co-Authored-By: Claude Opus 4.6 --- main/cli/serial_cli.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/main/cli/serial_cli.c b/main/cli/serial_cli.c index 8e25a1b..578c321 100644 --- a/main/cli/serial_cli.c +++ b/main/cli/serial_cli.c @@ -102,12 +102,17 @@ static int cmd_set_model(int argc, char **argv) /* --- memory_read command --- */ static int cmd_memory_read(int argc, char **argv) { - char buf[4096]; - if (memory_read_long_term(buf, sizeof(buf)) == ESP_OK && buf[0]) { + char *buf = malloc(4096); + if (!buf) { + printf("Out of memory.\n"); + return 1; + } + if (memory_read_long_term(buf, 4096) == ESP_OK && buf[0]) { printf("=== MEMORY.md ===\n%s\n=================\n", buf); } else { printf("MEMORY.md is empty or not found.\n"); } + free(buf); return 0; }