Hi, I found and fixed a segfault in handle_nand_dump_command.
fileio_size() was being called after nand_fileio_finish() which which resets the state of the NAND file I/O structure state, including NULL-ifying the pointer subsequently accessed by fileio_size().
Cheers, Paul
From 405d96d7d7acb96b0ef9b4b59afd24929671860e Mon Sep 17 00:00:00 2001 From: Paul Richards <paulr...@gmail.com> Date: Wed, 15 Dec 2010 21:42:03 +0900 Subject: [PATCH] Fix for segfault in handle_nand_dump_command. --- src/flash/nand/tcl.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/flash/nand/tcl.c b/src/flash/nand/tcl.c index 15cf179..af91fc8 100644 --- a/src/flash/nand/tcl.c +++ b/src/flash/nand/tcl.c @@ -357,6 +357,7 @@ COMMAND_HANDLER(handle_nand_verify_command) COMMAND_HANDLER(handle_nand_dump_command) { + int filesize; struct nand_device *nand = NULL; struct nand_fileio_state s; int retval = CALL_COMMAND_HANDLER(nand_fileio_parse_args, @@ -386,13 +387,12 @@ COMMAND_HANDLER(handle_nand_dump_command) s.address += nand->page_size; } + retval = fileio_size(&s.fileio, &filesize); + if (retval != ERROR_OK) + return retval; + if (nand_fileio_finish(&s) == ERROR_OK) { - int filesize; - retval = fileio_size(&s.fileio, &filesize); - if (retval != ERROR_OK) - return retval; - command_print(CMD_CTX, "dumped %ld bytes in %fs (%0.3f KiB/s)", (long)filesize, duration_elapsed(&s.bench), duration_kbps(&s.bench, filesize)); -- 1.7.2.3
_______________________________________________ Openocd-development mailing list Openocd-development@lists.berlios.de https://lists.berlios.de/mailman/listinfo/openocd-development