diff options
author | Ross Burton <ross.burton@arm.com> | 2022-04-25 12:20:44 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-04-26 18:25:08 +0100 |
commit | 53dca17ec3e96fd3eaa486ec6101f7e543dcc2a8 (patch) | |
tree | b079ebf187331049e715086e44d17dbf0491fd0f /meta/recipes-devtools/e2fsprogs | |
parent | 5eba125ddecb4e671b5dadf10034c6836a43dd6d (diff) | |
download | poky-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.patch | 56 | ||||
-rw-r--r-- | meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.5.bb | 1 |
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 @@ | |||
1 | CVE: CVE-2022-1304 | ||
2 | Upstream-Status: Submitted [https://lore.kernel.org/linux-ext4/20220421173148.20193-1-lczerner@redhat.com/] | ||
3 | Signed-off-by: Ross Burton <ross.burton@arm.com> | ||
4 | |||
5 | From 347084c9c1ad20f47dae16f5a3dcd8628d5fc7b0 Mon Sep 17 00:00:00 2001 | ||
6 | From: Lukas Czerner <lczerner@redhat.com> | ||
7 | Date: Thu, 21 Apr 2022 19:31:48 +0200 | ||
8 | Subject: [PATCH] e2fsprogs: add sanity check to extent manipulation | ||
9 | |||
10 | It is possible to have a corrupted extent tree in such a way that a leaf | ||
11 | node contains zero extents in it. Currently if that happens and we try | ||
12 | to traverse the tree we can end up accessing wrong data, or possibly | ||
13 | even uninitialized memory. Make sure we don't do that. | ||
14 | |||
15 | Additionally make sure that we have a sane number of bytes passed to | ||
16 | memmove() in ext2fs_extent_delete(). | ||
17 | |||
18 | Note that e2fsck is currently unable to spot and fix such corruption in | ||
19 | pass1. | ||
20 | |||
21 | Signed-off-by: Lukas Czerner <lczerner@redhat.com> | ||
22 | Reported-by: Nils Bars <nils_bars@t-online.de> | ||
23 | Addressess: https://bugzilla.redhat.com/show_bug.cgi?id=2068113 | ||
24 | --- | ||
25 | lib/ext2fs/extent.c | 8 ++++++++ | ||
26 | 1 file changed, 8 insertions(+) | ||
27 | |||
28 | diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c | ||
29 | index 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 | -- | ||
55 | 2.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 | " |
8 | SRC_URI:append:class-native = " \ | 9 | SRC_URI:append:class-native = " \ |
9 | file://e2fsprogs-fix-missing-check-for-permission-denied.patch \ | 10 | file://e2fsprogs-fix-missing-check-for-permission-denied.patch \ |