public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2] malloc: Fix clobbered errno when getrandom failed [BZ #29624]
@ 2022-09-29 11:13 Yu Chien Peter Lin
  2022-09-29 11:39 ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 4+ messages in thread
From: Yu Chien Peter Lin @ 2022-09-29 11:13 UTC (permalink / raw)
  To: libc-alpha; +Cc: alankao, ycliang, fw, dylan, Yu Chien Peter Lin

Save and restore errno when getrandom failed. On failure it will result
in errno clobbered at statically linked program startup. This scenario
is possible if getrandom is called by tcache_key_initialize when crng is
not ready thus EAGAIN is returned.

Fixes bug 29624.

Signed-off-by: Yu Chien Peter Lin <peterlin@andestech.com>
---
 malloc/malloc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/malloc/malloc.c b/malloc/malloc.c
index 953183e956..823d454c99 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -3133,9 +3133,11 @@ static uintptr_t tcache_key;
 static void
 tcache_key_initialize (void)
 {
+  int saved_errno = errno;
   if (__getrandom_nocancel (&tcache_key, sizeof(tcache_key), GRND_NONBLOCK)
       != sizeof (tcache_key))
     {
+      __set_errno(saved_errno);
       tcache_key = random_bits ();
 #if __WORDSIZE == 64
       tcache_key = (tcache_key << 32) | random_bits ();
-- 
2.34.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-09-29 13:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-29 11:13 [PATCH v2] malloc: Fix clobbered errno when getrandom failed [BZ #29624] Yu Chien Peter Lin
2022-09-29 11:39 ` Adhemerval Zanella Netto
2022-09-29 13:31   ` Florian Weimer
2022-09-29 13:51     ` Adhemerval Zanella Netto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).