svn rev #23630: branches/krb5-1-7/src/util/support/

tlyu@MIT.EDU tlyu at MIT.EDU
Mon Jan 11 21:49:42 EST 2010


http://src.mit.edu/fisheye/changelog/krb5/?cs=23630
Commit By: tlyu
Log Message:
ticket: 6534
version_fixed: 1.7.1
status: resolved

pull up r22643 from trunk

 ------------------------------------------------------------------------
 r22643 | ghudson | 2009-08-28 12:00:54 -0400 (Fri, 28 Aug 2009) | 7 lines

 ticket: 6534

 Disable the COPY_FIRST_CANONNAME workaround on Linux glibc 2.4 and
 later, since it leaks memory on fixed glibc versions.  We will still
 leak memory on glibc 2.3.4 through 2.3.6 (e.g. RHEL 4) but that's
 harder to detect.


Changed Files:
U   branches/krb5-1-7/src/util/support/fake-addrinfo.c
Modified: branches/krb5-1-7/src/util/support/fake-addrinfo.c
===================================================================
--- branches/krb5-1-7/src/util/support/fake-addrinfo.c	2010-01-12 01:07:48 UTC (rev 23629)
+++ branches/krb5-1-7/src/util/support/fake-addrinfo.c	2010-01-12 02:49:42 UTC (rev 23630)
@@ -140,7 +140,15 @@
 #endif
 
 #if defined (__linux__) && defined(HAVE_GETADDRINFO)
-# define COPY_FIRST_CANONNAME
+/* Define COPY_FIRST_CANONNAME for glibc 2.3 and prior. */
+#include <features.h>
+# ifdef __GLIBC_PREREQ
+#  if ! __GLIBC_PREREQ(2, 4)
+#   define COPY_FIRST_CANONNAME
+#  endif
+# else
+#   define COPY_FIRST_CANONNAME
+# endif
 #endif
 
 #ifdef _AIX
@@ -1157,7 +1165,7 @@
 	return aierr;
     }
 
-    /* Linux libc version 6 (libc-2.2.4.so on Debian) is broken.
+    /* Linux libc version 6 prior to 2.3.4 is broken.
 
        RFC 2553 says that when AI_CANONNAME is set, the ai_canonname
        flag of the first returned structure has the canonical name of
@@ -1188,9 +1196,12 @@
        Ref: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=133668 .
 
        Since it's dependent on the target hostname, it's hard to check
-       for at configure time.  Always do it on Linux for now.  When
-       they get around to fixing it, add a compile-time or run-time
-       check for the glibc version in use.
+       for at configure time.  The bug was fixed in glibc 2.3.4.
+       After the fix, the ai_canonname field is allocated, so our
+       workaround leaks memory.  We disable the workaround for glibc
+       >= 2.4, but there is no easy way to test for glibc patch
+       versions, so we still leak memory under glibc 2.3.4 through
+       2.3.6.
 
        Some Windows documentation says that even when AI_CANONNAME is
        set, the returned ai_canonname field can be null.  The NetBSD




More information about the cvs-krb5 mailing list