From a55c7090e783ad6cba78722bf34cb36b3ccff3eb Mon Sep 17 00:00:00 2001 From: "Oleg.Karfich@wago.com" Date: Wed, 15 Aug 2018 07:07:40 +0000 Subject: nand command: fix null pointer when adding/deleting a bb device Commit 40ee300 introduces info option about bad blocks. The open() function call is therefore moved out from mark good/bad block to use the filedescriptor in info option too. If someone tries to add/delete a bb device the optind variable is incremented and the open() call gets a null pointer. Fix this issue by returning when the bb device is added/deleted. Signed-off-by: Oleg Karfich Signed-off-by: Sascha Hauer --- commands/nand.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'commands') diff --git a/commands/nand.c b/commands/nand.c index b065a661c0..c57b3945a8 100644 --- a/commands/nand.c +++ b/commands/nand.c @@ -41,7 +41,7 @@ static int do_nand(int argc, char *argv[]) int command = 0; loff_t badblock = 0; int fd; - int ret; + int ret = 0; struct mtd_info_user mtdinfo; while((opt = getopt(argc, argv, "adb:g:i")) > 0) { @@ -88,13 +88,18 @@ static int do_nand(int argc, char *argv[]) optind++; } + + goto out_ret; } if (command == NAND_DEL) { while (optind < argc) { - dev_remove_bb_dev(basename(argv[optind])); + if (dev_remove_bb_dev(basename(argv[optind]))) + return 1; optind++; } + + goto out_ret; } fd = open(argv[optind], O_RDWR); @@ -149,10 +154,10 @@ static int do_nand(int argc, char *argv[]) printf("No bad blocks\n"); } - ret = 0; out: close(fd); +out_ret: return ret; } -- cgit v1.2.3