CVE-2014-XXXX isofs: infinite loop in CE record entries (rhbz 1175235 1175250)
This commit is contained in:
parent
a6cbe7f978
commit
a98a8d22b0
54
isofs-Fix-infinite-looping-over-CE-entries.patch
Normal file
54
isofs-Fix-infinite-looping-over-CE-entries.patch
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
From: Jan Kara <jack@suse.cz>
|
||||||
|
Date: Mon, 15 Dec 2014 14:22:46 +0100
|
||||||
|
Subject: [PATCH] isofs: Fix infinite looping over CE entries
|
||||||
|
|
||||||
|
Rock Ridge extensions define so called Continuation Entries (CE) which
|
||||||
|
define where is further space with Rock Ridge data. Corrupted isofs
|
||||||
|
image can contain arbitrarily long chain of these, including a one
|
||||||
|
containing loop and thus causing kernel to end in an infinite loop when
|
||||||
|
traversing these entries.
|
||||||
|
|
||||||
|
Limit the traversal to 32 entries which should be more than enough space
|
||||||
|
to store all the Rock Ridge data.
|
||||||
|
|
||||||
|
Reported-by: P J P <ppandit@redhat.com>
|
||||||
|
CC: stable@vger.kernel.org
|
||||||
|
Signed-off-by: Jan Kara <jack@suse.cz>
|
||||||
|
---
|
||||||
|
fs/isofs/rock.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
|
||||||
|
index f488bbae541a..bb63254ed848 100644
|
||||||
|
--- a/fs/isofs/rock.c
|
||||||
|
+++ b/fs/isofs/rock.c
|
||||||
|
@@ -30,6 +30,7 @@ struct rock_state {
|
||||||
|
int cont_size;
|
||||||
|
int cont_extent;
|
||||||
|
int cont_offset;
|
||||||
|
+ int cont_loops;
|
||||||
|
struct inode *inode;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -73,6 +74,9 @@ static void init_rock_state(struct rock_state *rs, struct inode *inode)
|
||||||
|
rs->inode = inode;
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Maximum number of Rock Ridge continuation entries */
|
||||||
|
+#define RR_MAX_CE_ENTRIES 32
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Returns 0 if the caller should continue scanning, 1 if the scan must end
|
||||||
|
* and -ve on error.
|
||||||
|
@@ -105,6 +109,8 @@ static int rock_continue(struct rock_state *rs)
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
ret = -EIO;
|
||||||
|
+ if (++rs->cont_loops >= RR_MAX_CE_ENTRIES)
|
||||||
|
+ goto out;
|
||||||
|
bh = sb_bread(rs->inode->i_sb, rs->cont_extent);
|
||||||
|
if (bh) {
|
||||||
|
memcpy(rs->buffer, bh->b_data + rs->cont_offset,
|
||||||
|
--
|
||||||
|
2.1.0
|
||||||
|
|
@ -632,6 +632,9 @@ Patch26100: x86-tls-Validate-TLS-entries-to-protect-espfix.patch
|
|||||||
#rhbz 1173806
|
#rhbz 1173806
|
||||||
Patch26101: powerpc-powernv-force-all-CPUs-to-be-bootable.patch
|
Patch26101: powerpc-powernv-force-all-CPUs-to-be-bootable.patch
|
||||||
|
|
||||||
|
#CVE-2014-XXXX rhbz 1175235 1175250
|
||||||
|
Patch26102: isofs-Fix-infinite-looping-over-CE-entries.patch
|
||||||
|
|
||||||
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
|
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
|
||||||
Patch30000: kernel-arm64.patch
|
Patch30000: kernel-arm64.patch
|
||||||
|
|
||||||
@ -1372,6 +1375,9 @@ ApplyPatch x86-tls-Validate-TLS-entries-to-protect-espfix.patch
|
|||||||
#rhbz 1173806
|
#rhbz 1173806
|
||||||
ApplyPatch powerpc-powernv-force-all-CPUs-to-be-bootable.patch
|
ApplyPatch powerpc-powernv-force-all-CPUs-to-be-bootable.patch
|
||||||
|
|
||||||
|
#CVE-2014-XXXX rhbz 1175235 1175250
|
||||||
|
ApplyPatch isofs-Fix-infinite-looping-over-CE-entries.patch
|
||||||
|
|
||||||
%if 0%{?aarch64patches}
|
%if 0%{?aarch64patches}
|
||||||
ApplyPatch kernel-arm64.patch
|
ApplyPatch kernel-arm64.patch
|
||||||
%ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
|
%ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
|
||||||
@ -2242,6 +2248,7 @@ fi
|
|||||||
%changelog
|
%changelog
|
||||||
* Wed Dec 17 2014 Josh Boyer <jwboyer@fedoraproject.org> - 3.18.1-1
|
* Wed Dec 17 2014 Josh Boyer <jwboyer@fedoraproject.org> - 3.18.1-1
|
||||||
- Linux v3.18.1
|
- Linux v3.18.1
|
||||||
|
- CVE-2014-XXXX isofs: infinite loop in CE record entries (rhbz 1175235 1175250)
|
||||||
|
|
||||||
* Tue Dec 16 2014 Josh Boyer <jwboyer@fedoraproject.org> - 3.18.0-2
|
* Tue Dec 16 2014 Josh Boyer <jwboyer@fedoraproject.org> - 3.18.0-2
|
||||||
- Add patch from Josh Stone to restore var-tracking via Kconfig (rhbz 1126580)
|
- Add patch from Josh Stone to restore var-tracking via Kconfig (rhbz 1126580)
|
||||||
|
Loading…
Reference in New Issue
Block a user