pull up r18183:18184 from trunk
authorTom Yu <tlyu@mit.edu>
Mon, 26 Jun 2006 03:21:41 +0000 (03:21 +0000)
committerTom Yu <tlyu@mit.edu>
Mon, 26 Jun 2006 03:21:41 +0000 (03:21 +0000)
 r18183@cathode-dark-space:  raeburn | 2006-06-20 20:28:21 -0400
 ticket: 2759
 tags: pullup

 (GET_HOST_BY_NAME, GET_HOST_BY_ADDR) [GETHOSTBYNAME_RETURNS_INT]: Test
 the output hostent pointer as an additional way of checking for errors.
 Original patch from Nalin Dahyabhai, needed some tweaking to fit in
 current sources, especially as updated in ticket 3911.

 r18184@cathode-dark-space:  raeburn | 2006-06-20 20:31:19 -0400
 ticket: 2759

 *sigh*
 Stupid typo in last change.

ticket: 2759
version_fixed: 1.5

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-5@18226 dc483132-0cff-0310-8789-dd5450dbe970

src/util/support/fake-addrinfo.c

index a622302b87cfdef7a22cdf2a81fd2c6ccb7ecd57..eba4c74b604ed9638fc9cc00ad35208d9c4559b5 100644 (file)
@@ -200,11 +200,12 @@ typedef struct {
 } GET_HOST_TMP;
 #define GET_HOST_BY_NAME(NAME, HP, ERR, TMP) \
     {                                                                  \
-       struct hostent *my_hp;                                          \
-       int my_h_err;                                                   \
-       (HP) = (gethostbyname_r((NAME), &TMP.ent,                       \
-                               TMP.buf, sizeof (TMP.buf), &TMP.hp,     \
-                               &my_h_err)                              \
+       struct hostent *my_hp = NULL;                                   \
+       int my_h_err, my_ret;                                           \
+       my_ret = gethostbyname_r((NAME), &TMP.ent,                      \
+                                TMP.buf, sizeof (TMP.buf), &my_hp,     \
+                                &my_h_err);                            \
+       (HP) = (((my_ret != 0) || (my_hp != &TMP.ent))                  \
                ? 0                                                     \
                : &TMP.ent);                                            \
        (ERR) = my_h_err;                                               \
@@ -212,10 +213,11 @@ typedef struct {
 #define GET_HOST_BY_ADDR(ADDR, ADDRLEN, FAMILY, HP, ERR, TMP) \
     {                                                                  \
        struct hostent *my_hp;                                          \
-       int my_h_err;                                                   \
-       (HP) = (gethostbyaddr_r((ADDR), (ADDRLEN), (FAMILY), &TMP.ent,  \
-                               TMP.buf, sizeof (TMP.buf), &my_hp,      \
-                               &my_h_err)                              \
+       int my_h_err, my_ret;                                           \
+       my_ret = gethostbyaddr_r((ADDR), (ADDRLEN), (FAMILY), &TMP.ent, \
+                                TMP.buf, sizeof (TMP.buf), &my_hp,     \
+                                &my_h_err);                            \
+       (HP) = (((my_ret != 0) || (my_hp != &TMP.ent))                  \
                ? 0                                                     \
                : &TMP.ent);                                            \
        (ERR) = my_h_err;                                               \