]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Linux gethostid: Check for NULL value from gethostbyname_r [BZ #23679]
authorMingli Yu <Mingli.Yu@windriver.com>
Thu, 20 Sep 2018 10:02:48 +0000 (12:02 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Thu, 20 Sep 2018 10:02:48 +0000 (12:02 +0200)
A NULL value can happen with certain gethostbyname_r failures.

ChangeLog
sysdeps/unix/sysv/linux/gethostid.c

index d5becac41c70769e22bb6b6542b17f2aadd8cce9..4a66ea4c2a126ed4a91ffc214c061268098943d8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-09-20  Mingli Yu  <Mingli.Yu@windriver.com>
+
+       * sysdeps/unix/sysv/linux/gethostid.c (gethostid): Check for NULL
+       value from gethostbyname_r.
+
 2018-09-19  Carlos O'Donell  <carlos@redhat.com>
 
        * stdlib/tst-setcontext9.c (f1): Rename to...
index 2e20f034dc134cc7f6cd927a920880bce7efcd29..ee0190e7f945db1f25fcb6546100ee9e97adb4de 100644 (file)
@@ -102,12 +102,12 @@ gethostid (void)
     {
       int ret = __gethostbyname_r (hostname, &hostbuf,
                                   tmpbuf.data, tmpbuf.length, &hp, &herr);
-      if (ret == 0)
+      if (ret == 0 && hp != NULL)
        break;
       else
        {
          /* Enlarge the buffer on ERANGE.  */
-         if (herr == NETDB_INTERNAL && errno == ERANGE)
+         if (ret != 0 && herr == NETDB_INTERNAL && errno == ERANGE)
            {
              if (!scratch_buffer_grow (&tmpbuf))
                return 0;