Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'fs_for_v7.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs

Pull isofs and udf fixes from Jan Kara:
"Several isofs and udf fixes"

* tag 'fs_for_v7.1-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
docs: isofs: replace dead ECMA-119 FTP link
udf: reject descriptors with oversized CRC length
isofs: use QSTR_LEN() in isofs_cmp
isofs: validate block number from NFS file handle in isofs_export_iget
isofs: validate Rock Ridge CE continuation extent against volume size

+19 -13
+1 -1
Documentation/filesystems/isofs.rst
··· 57 57 Recommended documents about ISO 9660 standard are located at: 58 58 59 59 - http://www.y-adagio.com/ 60 - - ftp://ftp.ecma.ch/ecma-st/Ecma-119.pdf 60 + - https://ecma-international.org/wp-content/uploads/ECMA-119_2nd_edition_december_1987.pdf 61 61 62 62 Quoting from the PDF "This 2nd Edition of Standard ECMA-119 is technically 63 63 identical with ISO 9660.", so it is a valid and gratis substitute of the
+1 -1
fs/isofs/export.c
··· 24 24 { 25 25 struct inode *inode; 26 26 27 - if (block == 0) 27 + if (block == 0 || block >= ISOFS_SB(sb)->s_nzones) 28 28 return ERR_PTR(-ESTALE); 29 29 inode = isofs_iget(sb, block, offset); 30 30 if (IS_ERR(inode))
+2 -9
fs/isofs/namei.c
··· 10 10 #include <linux/gfp.h> 11 11 #include "isofs.h" 12 12 13 - /* 14 - * ok, we cannot use strncmp, as the name is not in our data space. 15 - * Thus we'll have to use isofs_match. No big problem. Match also makes 16 - * some sanity tests. 17 - */ 18 13 static int 19 14 isofs_cmp(struct dentry *dentry, const char *compare, int dlen) 20 15 { 21 - struct qstr qstr; 22 - qstr.name = compare; 23 - qstr.len = dlen; 24 16 if (likely(!dentry->d_op)) 25 17 return dentry->d_name.len != dlen || memcmp(dentry->d_name.name, compare, dlen); 26 - return dentry->d_op->d_compare(NULL, dentry->d_name.len, dentry->d_name.name, &qstr); 18 + return dentry->d_op->d_compare(NULL, dentry->d_name.len, dentry->d_name.name, 19 + &QSTR_LEN(compare, dlen)); 27 20 } 28 21 29 22 /*
+9
fs/isofs/rock.c
··· 101 101 goto out; 102 102 } 103 103 104 + if ((unsigned)rs->cont_extent >= ISOFS_SB(rs->inode->i_sb)->s_nzones) { 105 + printk(KERN_NOTICE "rock: corrupted directory entry. " 106 + "extent=%u out of volume (nzones=%lu)\n", 107 + (unsigned)rs->cont_extent, 108 + ISOFS_SB(rs->inode->i_sb)->s_nzones); 109 + ret = -EIO; 110 + goto out; 111 + } 112 + 104 113 if (rs->cont_extent) { 105 114 struct buffer_head *bh; 106 115
+6 -2
fs/udf/misc.c
··· 230 230 } 231 231 232 232 /* Verify the descriptor CRC */ 233 - if (le16_to_cpu(tag_p->descCRCLength) + sizeof(struct tag) > sb->s_blocksize || 234 - le16_to_cpu(tag_p->descCRC) == crc_itu_t(0, 233 + if (le16_to_cpu(tag_p->descCRCLength) + sizeof(struct tag) > sb->s_blocksize) { 234 + udf_err(sb, "block %u: CRC length %u exceeds block size\n", 235 + block, le16_to_cpu(tag_p->descCRCLength)); 236 + goto error_out; 237 + } 238 + if (le16_to_cpu(tag_p->descCRC) == crc_itu_t(0, 235 239 bh->b_data + sizeof(struct tag), 236 240 le16_to_cpu(tag_p->descCRCLength))) 237 241 return bh;