From 6571ef822aa7d782a8168d39a27fa3e65a3032be Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Thu, 9 Feb 2012 10:13:30 -0800 Subject: libmtd: fix segmentation fault on lib->mtd Legacy systems do not initialize lib->mtd, so we shouldn't perform strlen(lib->mtd); this produces a segmentation fault. As this code isn't used in the legacy codepath, we can just move it down to an 'else' branch. Signed-off-by: Brian Norris Signed-off-by: Artem Bityutskiy --- lib/libmtd.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib/libmtd.c') diff --git a/lib/libmtd.c b/lib/libmtd.c index ecf182f..f0d40a0 100644 --- a/lib/libmtd.c +++ b/lib/libmtd.c @@ -644,13 +644,15 @@ void libmtd_close(libmtd_t desc) int mtd_dev_present(libmtd_t desc, int mtd_num) { struct stat st; struct libmtd *lib = (struct libmtd *)desc; - char file[strlen(lib->mtd) + 10]; if (!lib->sysfs_supported) return legacy_dev_present(mtd_num); + else { + char file[strlen(lib->mtd) + 10]; - sprintf(file, lib->mtd, mtd_num); - return !stat(file, &st); + sprintf(file, lib->mtd, mtd_num); + return !stat(file, &st); + } } int mtd_get_info(libmtd_t desc, struct mtd_info *info) -- cgit v1.2.3