Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67621675 authored by Jan Kara's avatar Jan Kara
Browse files

udf: Allow volume descriptor sequence to be terminated by unrecorded block



According to ECMA-167 3/8.4.2 a volume descriptor sequence can be
terminated also by an unrecorded block within the extent of volume
descriptor sequence. Currently we errored out in such case making such
volumes unmountable. Handle that case by treating any invalid block as a
block terminating the sequence.

Reported-by: default avatarPali Rohár <pali.rohar@gmail.com>
Acked-by: default avatarPali Rohár <pali.rohar@gmail.com>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 7b568cba
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -1627,12 +1627,8 @@ static noinline int udf_process_sequence(
	for (; (!done && block <= lastblock); block++) {

		bh = udf_read_tagged(sb, block, block, &ident);
		if (!bh) {
			udf_err(sb,
				"Block %llu of volume descriptor sequence is corrupted or we could not read it\n",
				(unsigned long long)block);
			return -EAGAIN;
		}
		if (!bh)
			break;

		/* Process each descriptor (ISO 13346 3/8.3-8.4) */
		gd = (struct generic_desc *)bh->b_data;