pull up r19410 from trunk
authorTom Yu <tlyu@mit.edu>
Tue, 10 Apr 2007 21:52:23 +0000 (21:52 +0000)
committerTom Yu <tlyu@mit.edu>
Tue, 10 Apr 2007 21:52:23 +0000 (21:52 +0000)
 r19410@cathode-dark-space:  raeburn | 2007-04-09 16:58:13 -0400
 ticket: new
 subject: EAI_NODATA deprecated, not always defined
 tags: pullup
 target_version: 1.6.1

 Brian Kantor reports (on the kerberos@mit list today) that krb5-1.6
 doesn't build on FreeBSD 6.1 because they've done away with
 EAI_NODATA, which was removed from the getaddrinfo API in RFC 3943.

 This patch conditionalizes two tests for EAI_NODATA on the macro being
 defined, and also adds handling for EAI_OVERFLOW, a new error code
 added in RFC 3943.

ticket: 5518
version_fixed: 1.6.1

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

src/lib/krb5/os/hst_realm.c
src/lib/krb5/os/locate_kdc.c

index e6601644189a60539eb5fa46540537afbeb2da70..7e24b8d6de050c9d80602cd025d0c59e4b15e8b8 100644 (file)
@@ -302,12 +302,16 @@ krb5int_translate_gai_error (int num)
        return EAFNOSUPPORT;
     case EAI_MEMORY:
        return ENOMEM;
-#if EAI_NODATA != EAI_NONAME
+#if defined(EAI_NODATA) && EAI_NODATA != EAI_NONAME
     case EAI_NODATA:
        return KRB5_EAI_NODATA;
 #endif
     case EAI_NONAME:
        return KRB5_EAI_NONAME;
+#if defined(EAI_OVERFLOW)
+    case EAI_OVERFLOW:
+       return EINVAL;          /* XXX */
+#endif
     case EAI_SERVICE:
        return KRB5_EAI_SERVICE;
     case EAI_SOCKTYPE:
index 61ffe8c82920cb8e30ff486ccbc250c3cd023f06..30eac1b8301b5455506ca81a2c80752e83afb3a3 100644 (file)
@@ -157,13 +157,18 @@ static int translate_ai_error (int err)
 #ifdef EAI_ADDRFAMILY
     case EAI_ADDRFAMILY:
 #endif
-#if EAI_NODATA != EAI_NONAME
+#if defined(EAI_NODATA) && EAI_NODATA != EAI_NONAME
     case EAI_NODATA:
 #endif
     case EAI_NONAME:
        /* Name not known or no address data, but no error.  Do
           nothing more.  */
        return 0;
+#ifdef EAI_OVERFLOW
+    case EAI_OVERFLOW:
+       /* An argument buffer overflowed.  */
+       return EINVAL;          /* XXX */
+#endif
 #ifdef EAI_SYSTEM
     case EAI_SYSTEM:
        /* System error, obviously.  */