diff options
Diffstat (limited to 'meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files')
-rw-r--r-- | meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files/0001-unistr.c-Fix-use-after-free-in-ntfs_uppercase_mbs.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files/0001-unistr.c-Fix-use-after-free-in-ntfs_uppercase_mbs.patch b/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files/0001-unistr.c-Fix-use-after-free-in-ntfs_uppercase_mbs.patch new file mode 100644 index 0000000000..3160f56880 --- /dev/null +++ b/meta-filesystems/recipes-filesystems/ntfs-3g-ntfsprogs/files/0001-unistr.c-Fix-use-after-free-in-ntfs_uppercase_mbs.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 7b6210c5be46e5120b42c09f910e8f104bf3edf1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Erik Larsson <erik@tuxera.com> | ||
3 | Date: Tue, 13 Jun 2023 17:47:15 +0300 | ||
4 | Subject: [PATCH] unistr.c: Fix use-after-free in 'ntfs_uppercase_mbs'. | ||
5 | |||
6 | If 'utf8_to_unicode' throws an error due to an invalid UTF-8 sequence, | ||
7 | then 'n' will be less than 0 and the loop will terminate without storing | ||
8 | anything in '*t'. After the loop the uppercase string's allocation is | ||
9 | freed, however after it is freed it is unconditionally accessed through | ||
10 | '*t', which points into the freed allocation, for the purpose of NULL- | ||
11 | terminating the string. This leads to a use-after-free. | ||
12 | Fixed by only NULL-terminating the string when no error has been thrown. | ||
13 | |||
14 | Thanks for Jeffrey Bencteux for reporting this issue: | ||
15 | https://github.com/tuxera/ntfs-3g/issues/84 | ||
16 | |||
17 | Upstream-Status: Backport [https://github.com/tuxera/ntfs-3g/commit/75dcdc2cf37478fad6c0e3427403d198b554951d] | ||
18 | CVE: CVE-2023-52890 | ||
19 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> | ||
20 | |||
21 | --- | ||
22 | libntfs-3g/unistr.c | 3 ++- | ||
23 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/libntfs-3g/unistr.c b/libntfs-3g/unistr.c | ||
26 | index 5854b3b..db8ddf4 100644 | ||
27 | --- a/libntfs-3g/unistr.c | ||
28 | +++ b/libntfs-3g/unistr.c | ||
29 | @@ -1189,8 +1189,9 @@ char *ntfs_uppercase_mbs(const char *low, | ||
30 | free(upp); | ||
31 | upp = (char*)NULL; | ||
32 | errno = EILSEQ; | ||
33 | + } else { | ||
34 | + *t = 0; | ||
35 | } | ||
36 | - *t = 0; | ||
37 | } | ||
38 | return (upp); | ||
39 | } | ||
40 | -- | ||
41 | 2.34.1 | ||
42 | |||