summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/e2fsprogs
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@arm.com>2022-04-25 12:20:44 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-04-26 18:25:08 +0100
commit53dca17ec3e96fd3eaa486ec6101f7e543dcc2a8 (patch)
treeb079ebf187331049e715086e44d17dbf0491fd0f /meta/recipes-devtools/e2fsprogs
parent5eba125ddecb4e671b5dadf10034c6836a43dd6d (diff)
downloadpoky-53dca17ec3e96fd3eaa486ec6101f7e543dcc2a8.tar.gz
e2fsprogs: fix CVE-2022-1304
Backport a submitted patch to fix CVE-2022-1304. (From OE-Core rev: 31fd4ca6fa85ed1e62faf37e6d7bed5b558cb309) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/e2fsprogs')
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/extents.patch56
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb1
2 files changed, 57 insertions, 0 deletions
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/extents.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/extents.patch
new file mode 100644
index 0000000000..ffaecc622a
--- /dev/null
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/extents.patch
@@ -0,0 +1,56 @@
1CVE: CVE-2022-1304
2Upstream-Status: Submitted [https://lore.kernel.org/linux-ext4/20220421173148.20193-1-lczerner@redhat.com/]
3Signed-off-by: Ross Burton <ross.burton@arm.com>
4
5From 347084c9c1ad20f47dae16f5a3dcd8628d5fc7b0 Mon Sep 17 00:00:00 2001
6From: Lukas Czerner <lczerner@redhat.com>
7Date: Thu, 21 Apr 2022 19:31:48 +0200
8Subject: [PATCH] e2fsprogs: add sanity check to extent manipulation
9
10It is possible to have a corrupted extent tree in such a way that a leaf
11node contains zero extents in it. Currently if that happens and we try
12to traverse the tree we can end up accessing wrong data, or possibly
13even uninitialized memory. Make sure we don't do that.
14
15Additionally make sure that we have a sane number of bytes passed to
16memmove() in ext2fs_extent_delete().
17
18Note that e2fsck is currently unable to spot and fix such corruption in
19pass1.
20
21Signed-off-by: Lukas Czerner <lczerner@redhat.com>
22Reported-by: Nils Bars <nils_bars@t-online.de>
23Addressess: https://bugzilla.redhat.com/show_bug.cgi?id=2068113
24---
25 lib/ext2fs/extent.c | 8 ++++++++
26 1 file changed, 8 insertions(+)
27
28diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c
29index b324c7b0..1a206a16 100644
30--- a/lib/ext2fs/extent.c
31+++ b/lib/ext2fs/extent.c
32@@ -495,6 +495,10 @@ retry:
33 ext2fs_le16_to_cpu(eh->eh_entries);
34 newpath->max_entries = ext2fs_le16_to_cpu(eh->eh_max);
35
36+ /* Make sure there is at least one extent present */
37+ if (newpath->left <= 0)
38+ return EXT2_ET_EXTENT_NO_DOWN;
39+
40 if (path->left > 0) {
41 ix++;
42 newpath->end_blk = ext2fs_le32_to_cpu(ix->ei_block);
43@@ -1630,6 +1634,10 @@ errcode_t ext2fs_extent_delete(ext2_extent_handle_t handle, int flags)
44
45 cp = path->curr;
46
47+ /* Sanity check before memmove() */
48+ if (path->left < 0)
49+ return EXT2_ET_EXTENT_LEAF_BAD;
50+
51 if (path->left) {
52 memmove(cp, cp + sizeof(struct ext3_extent_idx),
53 path->left * sizeof(struct ext3_extent_idx));
54--
552.25.1
56
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb
index 16c183eed3..ec48f419c7 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb
@@ -4,6 +4,7 @@ SRC_URI += "file://remove.ldconfig.call.patch \
4 file://run-ptest \ 4 file://run-ptest \
5 file://ptest.patch \ 5 file://ptest.patch \
6 file://mkdir_p.patch \ 6 file://mkdir_p.patch \
7 file://extents.patch \
7 " 8 "
8SRC_URI:append:class-native = " \ 9SRC_URI:append:class-native = " \
9 file://e2fsprogs-fix-missing-check-for-permission-denied.patch \ 10 file://e2fsprogs-fix-missing-check-for-permission-denied.patch \