Whamcloud - gitweb
LU-4223 utils: fixing loop leaking in utils
[fs/lustre-release.git] / lustre / utils / mount_lustre.c
index c8fe8a6..4276e5c 100644 (file)
@@ -320,11 +320,17 @@ static int clear_update_ondisk(char *source, struct lustre_disk_data *ldd)
        char default_mountopts[512] = "";
        struct mkfs_opts mkop;
        int ret;
+       int ret2;
 
        memset(&mkop, 0, sizeof(mkop));
        mkop.mo_ldd = *ldd;
        mkop.mo_ldd.ldd_flags &= ~LDD_F_UPDATE;
-       strcpy(mkop.mo_device, source);
+       if (strlen(source) > sizeof(mkop.mo_device)-1) {
+               fatal();
+               fprintf(stderr, "Device name too long: %s\n", source);
+               return -E2BIG;
+       }
+       strncpy(mkop.mo_device, source, sizeof(mkop.mo_device));
 
        ret = osd_prepare_lustre(&mkop,
                        default_mountopts, sizeof(default_mountopts),
@@ -361,7 +367,10 @@ static int clear_update_ondisk(char *source, struct lustre_disk_data *ldd)
                fprintf(stderr, "failed to write local files: %s\n",
                        strerror(ret));
        }
-       loop_cleanup(&mkop);
+
+       ret2 = loop_cleanup(&mkop);
+       if (ret == 0)
+               ret = ret2;
 
        return ret;
 }