]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
libanl: properly cleanup if first helper thread creation failed (bug 22927)
authorAndreas Schwab <schwab@suse.de>
Tue, 6 Nov 2018 15:12:07 +0000 (16:12 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Tue, 6 Nov 2018 15:12:07 +0000 (16:12 +0100)
(cherry picked from commit bd3b0fbae33a9a4cc5e2daf049443d5cf03d4251)

ChangeLog
NEWS
resolv/gai_misc.c

index d558df58afaa7c978d0a2af9429185425efb5e6f..db4ac3b76a418828153820b727d98fb29d44365e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-05  Andreas Schwab  <schwab@suse.de>
+
+       [BZ #22927]
+       * resolv/gai_misc.c (__gai_enqueue_request): Don't crash if
+       creating the first helper thread failed.
+
 2018-10-23  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
        [BZ #23709]
diff --git a/NEWS b/NEWS
index f3004915f2739c6abff5df38631e451550ac0ee5..b85be4a9c12b269620b52823753304c87837a6f0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,7 @@ Version 2.28.1
 The following bugs are resolved with this release:
 
   [20209] localedata: Spelling mistake for Sunday in Greenlandic kl_GL
+  [22927] libanl: properly cleanup if first helper thread creation failed
   [23400] stdlib/test-bz22786.c creates temporary files in glibc source tree
   [23497] readdir64@GLIBC_2.1 cannot parse the kernel directory stream
   [23521] nss_files aliases database file stream leak
index e7c3b63cc5725b4fc98cef4902f00d9a8228516a..80a2cff8353fcb6cade44431cefcbdf8805cf35b 100644 (file)
@@ -261,8 +261,11 @@ __gai_enqueue_request (struct gaicb *gaicbp)
              /* We cannot create a thread in the moment and there is
                 also no thread running.  This is a problem.  `errno' is
                 set to EAGAIN if this is only a temporary problem.  */
-             assert (lastp->next == newp);
-             lastp->next = NULL;
+             assert (requests == newp || lastp->next == newp);
+             if (lastp != NULL)
+               lastp->next = NULL;
+             else
+               requests = NULL;
              requests_tail = lastp;
 
              newp->next = freelist;