]> www.infradead.org Git - mtd-utils.git/commitdiff
libmtd: fix segmentation fault on lib->mtd
authorBrian Norris <computersforpeace@gmail.com>
Thu, 9 Feb 2012 18:13:30 +0000 (10:13 -0800)
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
Tue, 14 Feb 2012 09:00:12 +0000 (11:00 +0200)
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 <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
lib/libmtd.c

index ecf182f7ff2a4fa684d39fab4025402bdd9b3f47..f0d40a0c687c1555aecbce13c7dd51d7f1ea63d2 100644 (file)
@@ -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)