]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - fs/udf/super.c
udf: Allow mounting volumes with incorrect identification strings
[mirror_ubuntu-bionic-kernel.git] / fs / udf / super.c
index 57ebb1660f1239bee54c60c682d3d7613ae98911..463cb049927a8b6b8b9d194d6932300821e99472 100644 (file)
@@ -919,16 +919,20 @@ static int udf_load_pvoldesc(struct super_block *sb, sector_t block)
        }
 
        ret = udf_dstrCS0toUTF8(outstr, 31, pvoldesc->volIdent, 32);
-       if (ret < 0)
-               goto out_bh;
-
-       strncpy(UDF_SB(sb)->s_volume_ident, outstr, ret);
+       if (ret < 0) {
+               strcpy(UDF_SB(sb)->s_volume_ident, "InvalidName");
+               pr_warn("incorrect volume identification, setting to "
+                       "'InvalidName'\n");
+       } else {
+               strncpy(UDF_SB(sb)->s_volume_ident, outstr, ret);
+       }
        udf_debug("volIdent[] = '%s'\n", UDF_SB(sb)->s_volume_ident);
 
        ret = udf_dstrCS0toUTF8(outstr, 127, pvoldesc->volSetIdent, 128);
-       if (ret < 0)
+       if (ret < 0) {
+               ret = 0;
                goto out_bh;
-
+       }
        outstr[ret] = 0;
        udf_debug("volSetIdent[] = '%s'\n", outstr);