summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/glibc/glibc
diff options
context:
space:
mode:
authorVinay Kumar <vinay.m.engg@gmail.com>2021-07-27 11:38:31 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-07-28 23:47:00 +0100
commit55681d09d7f519a1c7f17d17b18ec59bccdc91ca (patch)
tree01bf046b7464b40276856ec35cf22dc6be3c43b1 /meta/recipes-core/glibc/glibc
parent8dbe3bd652e24822da6754444bd9d071405d490c (diff)
downloadpoky-55681d09d7f519a1c7f17d17b18ec59bccdc91ca.tar.gz
glibc: Fix CVE-2021-33574
Source: https://sourceware.org/git/glibc.git Tracking -- https://sourceware.org/bugzilla/show_bug.cgi?id=27896 Backported upstream commit 42d359350510506b87101cf77202fefcbfc790cb to glibc-2.33 source with dependent commit id 217b6dc298156bdb0d6aea9ea93e7e394a5ff091. Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=42d359350510506b87101cf77202fefcbfc790cb] (From OE-Core rev: b4bc29cf19d811c0ec948dbe69c0bc79fe31e0e8) Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/glibc/glibc')
-rw-r--r--meta/recipes-core/glibc/glibc/CVE-2021-33574.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/meta/recipes-core/glibc/glibc/CVE-2021-33574.patch b/meta/recipes-core/glibc/glibc/CVE-2021-33574.patch
new file mode 100644
index 0000000000..fd73b23c88
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/CVE-2021-33574.patch
@@ -0,0 +1,61 @@
1From 42d359350510506b87101cf77202fefcbfc790cb Mon Sep 17 00:00:00 2001
2From: Andreas Schwab <schwab@linux-m68k.org>
3Date: Thu, 27 May 2021 12:49:47 +0200
4Subject: [PATCH] Use __pthread_attr_copy in mq_notify (bug 27896)
5
6Make a deep copy of the pthread attribute object to remove a potential
7use-after-free issue.
8
9Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=42d359350510506b87101cf77202fefcbfc790cb]
10CVE: CVE-2021-33574
11Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
12---
13diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
14index cc575a0cdd8..6f46d29d1dc 100644
15--- a/sysdeps/unix/sysv/linux/mq_notify.c
16+++ b/sysdeps/unix/sysv/linux/mq_notify.c
17@@ -133,8 +133,11 @@ helper_thread (void *arg)
18 (void) __pthread_barrier_wait (&notify_barrier);
19 }
20 else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED)
21- /* The only state we keep is the copy of the thread attributes. */
22- free (data.attr);
23+ {
24+ /* The only state we keep is the copy of the thread attributes. */
25+ pthread_attr_destroy (data.attr);
26+ free (data.attr);
27+ }
28 }
29 return NULL;
30 }
31@@ -255,8 +258,14 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
32 if (data.attr == NULL)
33 return -1;
34
35- memcpy (data.attr, notification->sigev_notify_attributes,
36- sizeof (pthread_attr_t));
37+ int ret = __pthread_attr_copy (data.attr,
38+ notification->sigev_notify_attributes);
39+ if (ret != 0)
40+ {
41+ free (data.attr);
42+ __set_errno (ret);
43+ return -1;
44+ }
45 }
46
47 /* Construct the new request. */
48@@ -269,8 +278,11 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
49 int retval = INLINE_SYSCALL (mq_notify, 2, mqdes, &se);
50
51 /* If it failed, free the allocated memory. */
52- if (__glibc_unlikely (retval != 0))
53- free (data.attr);
54+ if (retval != 0 && data.attr != NULL)
55+ {
56+ pthread_attr_destroy (data.attr);
57+ free (data.attr);
58+ }
59
60 return retval;
61 }