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 \ |
