]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
getaddrinfo: Use &errno has the errno pointer
authorFlorian Weimer <fweimer@redhat.com>
Fri, 1 Sep 2017 06:56:46 +0000 (08:56 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Mon, 4 Sep 2017 09:44:21 +0000 (11:44 +0200)
Similar code in nss/getXXbyYY_r.c is already using &errno as the
argument.

(cherry picked from commit 924b121c5978689001ae28cf1c8497371dad4f71)

ChangeLog
sysdeps/posix/getaddrinfo.c

index 591c753fccacaf1a2e239509b60332f4f4a82ad4..04304bb929fea140e06c9e01091acb5e082f9536 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-09-01  Florian Weimer  <fweimer@redhat.com>
+
+       * sysdeps/posix/getaddrinfo.c (gethosts): Use errno directly.
+       (getcanonname): Likewise.
+       (gaih_inet): Likewise.
+
 2017-08-08  Florian Weimer  <fweimer@redhat.com>
 
        * sysdeps/posix/getaddrinfo.c (gaih_inet): Remove unreachable
index 09f85fc472f9e1774ee39a3670396d8fcd1cdcc6..1a16820b7e598dbc6bb96f248cf2bb9d79c7c638 100644 (file)
@@ -247,11 +247,10 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
   char *localcanon = NULL;                                                   \
   no_data = 0;                                                               \
   while (1) {                                                                \
-    rc = 0;                                                                  \
     status = DL_CALL_FCT (fct, (name, _family, &th,                          \
                                tmpbuf->data, tmpbuf->length,                 \
-                               &rc, &herrno, NULL, &localcanon));            \
-    if (rc != ERANGE || herrno != NETDB_INTERNAL)                            \
+                               &errno, &herrno, NULL, &localcanon));         \
+    if (errno != ERANGE || herrno != NETDB_INTERNAL)                         \
       break;                                                                 \
     if (!scratch_buffer_grow (tmpbuf))                                       \
       {                                                                              \
@@ -261,11 +260,11 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
        goto free_and_return;                                                 \
       }                                                                              \
   }                                                                          \
-  if (status == NSS_STATUS_SUCCESS && rc == 0)                               \
+  if (status == NSS_STATUS_SUCCESS && errno == 0)                            \
     h = &th;                                                                 \
   else                                                                       \
     h = NULL;                                                                \
-  if (rc != 0)                                                               \
+  if (errno != 0)                                                            \
     {                                                                        \
       if (herrno == NETDB_INTERNAL)                                          \
        {                                                                     \
@@ -335,9 +334,8 @@ getcanonname (service_user *nip, struct gaih_addrtuple *at, const char *name)
     {
       char buf[256];
       int herrno;
-      int rc;
       if (DL_CALL_FCT (cfct, (at->name ?: name, buf, sizeof (buf),
-                             &s, &rc, &herrno)) != NSS_STATUS_SUCCESS)
+                             &s, &errno, &herrno)) != NSS_STATUS_SUCCESS)
        /* If the canonical name cannot be determined, use the passed
           string.  */
        s = (char *) name;
@@ -353,7 +351,6 @@ gaih_inet (const char *name, const struct gaih_service *service,
   const struct gaih_typeproto *tp = gaih_inet_typeproto;
   struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
   struct gaih_addrtuple *at = NULL;
-  int rc;
   bool got_ipv6 = false;
   const char *canon = NULL;
   const char *orig_name = name;
@@ -395,7 +392,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
              st = (struct gaih_servtuple *)
                alloca_account (sizeof (struct gaih_servtuple), alloca_used);
 
-             if ((rc = gaih_inet_serv (service->name, tp, req, st, tmpbuf)))
+             int rc = gaih_inet_serv (service->name, tp, req, st, tmpbuf);
+             if (__glibc_unlikely (rc != 0))
                return rc;
            }
          else
@@ -495,7 +493,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
            idn_flags |= IDNA_USE_STD3_ASCII_RULES;
 
          char *p = NULL;
-         rc = __idna_to_ascii_lz (name, &p, idn_flags);
+         int rc = __idna_to_ascii_lz (name, &p, idn_flags);
          if (rc != IDNA_SUCCESS)
            {
              /* No need to jump to free_and_return here.  */
@@ -793,15 +791,14 @@ gaih_inet (const char *name, const struct gaih_service *service,
 
                  while (1)
                    {
-                     rc = 0;
                      status = DL_CALL_FCT (fct4, (name, pat,
                                                   tmpbuf->data, tmpbuf->length,
-                                                  &rc, &herrno,
+                                                  &errno, &herrno,
                                                   NULL));
                      if (status == NSS_STATUS_SUCCESS)
                        break;
                      if (status != NSS_STATUS_TRYAGAIN
-                         || rc != ERANGE || herrno != NETDB_INTERNAL)
+                         || errno != ERANGE || herrno != NETDB_INTERNAL)
                        {
                          if (herrno == TRY_AGAIN)
                            no_data = EAI_AGAIN;