[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r5358 - in glibc-package/branches/eglibc-2.16/debian: . control.in local/manpages patches patches/any patches/hurd-i386 patches/kfreebsd sysdeps



Author: aurel32
Date: 2012-10-26 14:51:03 +0000 (Fri, 26 Oct 2012)
New Revision: 5358

Added:
   glibc-package/branches/eglibc-2.16/debian/patches/any/cvs-strtod-overflow.diff
   glibc-package/branches/eglibc-2.16/debian/patches/hurd-i386/unsubmitted-gnumach.defs.diff
   glibc-package/branches/eglibc-2.16/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff
Modified:
   glibc-package/branches/eglibc-2.16/debian/changelog
   glibc-package/branches/eglibc-2.16/debian/control
   glibc-package/branches/eglibc-2.16/debian/control.in/main
   glibc-package/branches/eglibc-2.16/debian/libc0.3.symbols.hurd-i386
   glibc-package/branches/eglibc-2.16/debian/local/manpages/ldconfig.8
   glibc-package/branches/eglibc-2.16/debian/patches/series
   glibc-package/branches/eglibc-2.16/debian/sysdeps/linux.mk
Log:
Merge from trunk, up to revision 5357.


Modified: glibc-package/branches/eglibc-2.16/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/changelog	2012-10-26 14:30:38 UTC (rev 5357)
+++ glibc-package/branches/eglibc-2.16/debian/changelog	2012-10-26 14:51:03 UTC (rev 5358)
@@ -209,6 +209,8 @@
     - Remove patches/any/cvs-vfprintf-positional.diff (merged upstream).
     - Remove patches/any/cvs-vfprintf-many-format-strings.diff (merged
       upstream).
+    - Remove patches/any/cvs-arch-lowlevellock.diff (merged upstream).
+    - Update patches/any/cvs-strtod-overflow.diff. 
   * Add patches/any/local-revert-fclose-posix2008.diff to fix issues with
     Ruby.
   * Add patches/amd64/local-pthread_cond_wait.diff from Jeff Law to fix
@@ -366,6 +368,30 @@
 
  -- Aurelien Jarno <aurel32@debian.org>  Wed, 25 Jul 2012 23:45:58 +0200
 
+eglibc (2.13-36) unstable; urgency=low
+
+  [ Aurelien Jarno ]
+  * patches/any/cvs-strtod-overflow.diff: new patch from upstream to fix
+    an integer/buffer overflow in strtod() (CVE-2012-3480).  Closes: 
+    #684889.
+  * patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff: new patch to
+    fix getaddrinfo() when service = 0 on a FreeBSD kernel with DNS
+    server returning IPv6, but without IPv6 connection.  Closes: #690021.
+  * sysdeps/linux.mk: fix kernel version parsing with only two numbers.
+  * patches/any/cvs-arch-lowlevellock.diff: new patch from upstream to
+    fix futexes atomic issue on ARM and SPARC.  Closes: #691173.
+  * local/manpages/ldconfig.8: fix wrong description of ld.so.conf format.
+    Closes: #684682.
+
+  [ Samuel Thibault ]
+  * libc0.3.symbols.hurd-i386: Add missing *_exec_file_name symbols.
+  * patches/hurd-i386/unsubmitted-gnumach.defs.diff: New patch to build stubs
+    for new gnumach.defs.
+  * libc0.3.symbols.hurd-i386: Add new gnumach.defs stubs symbols.
+  * control: build-depend on gnumach-dev that provides gnumach.defs.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 26 Oct 2012 14:28:06 +0000
+
 eglibc (2.13-35) unstable; urgency=low
 
   [ Aurelien Jarno ]

Modified: glibc-package/branches/eglibc-2.16/debian/control
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/control	2012-10-26 14:30:38 UTC (rev 5357)
+++ glibc-package/branches/eglibc-2.16/debian/control	2012-10-26 14:51:03 UTC (rev 5358)
@@ -5,7 +5,7 @@
  autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 7.4.3), tar (>= 1.22), fdupes,
  linux-libc-dev (>= 3.4) [linux-any],
  libaudit-dev [linux-any], libcap-dev [linux-any], libselinux-dev [linux-any],
- mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20120520-2~) [hurd-i386], gnumach-dev [hurd-i386],
+ mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20120520-2~) [hurd-i386], gnumach-dev (>= 2:1.3.99.dfsg.git20120923~) [hurd-i386],
  kfreebsd-kernel-headers [kfreebsd-any],
  binutils (>= 2.21),
  g++-4.6 [!x32 !arm64], g++-4.6-multilib [amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc],

Modified: glibc-package/branches/eglibc-2.16/debian/control.in/main
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/control.in/main	2012-10-26 14:30:38 UTC (rev 5357)
+++ glibc-package/branches/eglibc-2.16/debian/control.in/main	2012-10-26 14:51:03 UTC (rev 5358)
@@ -5,7 +5,7 @@
  autoconf, sed (>= 4.0.5-4), gawk, debhelper (>= 7.4.3), tar (>= 1.22), fdupes,
  linux-libc-dev (>= 3.4) [linux-any],
  libaudit-dev [linux-any], libcap-dev [linux-any], libselinux-dev [linux-any],
- mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20120520-2~) [hurd-i386], gnumach-dev [hurd-i386],
+ mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20120520-2~) [hurd-i386], gnumach-dev (>= 2:1.3.99.dfsg.git20120923~) [hurd-i386],
  kfreebsd-kernel-headers [kfreebsd-any],
  binutils (>= 2.21),
  g++-4.6 [!x32 !arm64], g++-4.6-multilib [amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc],

Modified: glibc-package/branches/eglibc-2.16/debian/libc0.3.symbols.hurd-i386
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/libc0.3.symbols.hurd-i386	2012-10-26 14:30:38 UTC (rev 5357)
+++ glibc-package/branches/eglibc-2.16/debian/libc0.3.symbols.hurd-i386	2012-10-26 14:51:03 UTC (rev 5358)
@@ -368,6 +368,7 @@
  dir_rmdir@Base 2.11
  dir_unlink@Base 2.11
  exec_exec@Base 2.11
+ exec_exec_file_name@Base 2.13-33~0
  exec_init@Base 2.11
  exec_setexecdata@Base 2.11
  exec_startup_get_info@Base 2.11
@@ -377,6 +378,7 @@
  file_chmod@Base 2.11
  file_chown@Base 2.11
  file_exec@Base 2.11
+ file_exec_file_name@Base 2.13-33~0
  file_get_fs_options@Base 2.11
  file_get_storage_info@Base 2.11
  file_get_translator@Base 2.11
@@ -775,6 +777,7 @@
  __thread_terminate@Base 2.11
  __thread_wire@Base 2.11
  __vm_allocate_rpc@Base 2.11
+ __vm_cache_statistics@Base 2.13-36
  __vm_copy@Base 2.11
  __vm_deallocate_rpc@Base 2.11
  __vm_inherit@Base 2.11
@@ -925,6 +928,7 @@
  thread_terminate@Base 2.11
  thread_wire@Base 2.11
  vm_allocate_rpc@Base 2.11
+ vm_cache_statistics@Base 2.13-36
  vm_copy@Base 2.11
  vm_deallocate_rpc@Base 2.11
  vm_inherit@Base 2.11

Modified: glibc-package/branches/eglibc-2.16/debian/local/manpages/ldconfig.8
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/local/manpages/ldconfig.8	2012-10-26 14:30:38 UTC (rev 5357)
+++ glibc-package/branches/eglibc-2.16/debian/local/manpages/ldconfig.8	2012-10-26 14:51:03 UTC (rev 5358)
@@ -140,8 +140,7 @@
 execution time linker/loader
 .TP 20
 .B /etc/ld.so.conf
-File containing a list of colon, space, tab, newline, or comma separated
-directories in which to search for libraries.
+File containing a list of newline separated directories in which to search for libraries.
 .TP 20
 .B /etc/ld.so.cache
 File containing an ordered list of libraries found in the directories

Added: glibc-package/branches/eglibc-2.16/debian/patches/any/cvs-strtod-overflow.diff
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/patches/any/cvs-strtod-overflow.diff	                        (rev 0)
+++ glibc-package/branches/eglibc-2.16/debian/patches/any/cvs-strtod-overflow.diff	2012-10-26 14:51:03 UTC (rev 5358)
@@ -0,0 +1,347 @@
+2012-08-27  Joseph Myers  <joseph@codesourcery.com>
+  
+	[BZ #14519]
+	* stdlib/strtod_l.c (round_and_return): Return -0.0 for
+	underflowing exponent in case of negative sign.
+	* stdlib/tst-strtod-round-data: Add more tests.
+	* stdlib/tst-strtod-round.c (tests): Regenerated.
+
+2012-08-27  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #14459]
+	* stdlib/strtod_l.c: Include <stdint.h>.
+	(NDEBUG): Do not define.
+	(round_and_return): Change EXPONENT parameter to type intmax_t.
+	Rearrange calculations to avoid internal overflow possibilities.
+	(str_to_mpn): Change EXPONENT parameter to type intmax_t *.
+	Rearrange calculations to avoid internal overflow possibilities.
+	Assert that number fits inside MPNSIZE limbs.
+	(____STRTOF_INTERNAL): Change EXPONENT variable to type intmax_t.
+	Change DIG_NO, INT_NO and LEAD_ZERO to type size_t.  Rearrange
+	calculations and add assertions to avoid internal overflow
+	possibilities.  Add casts to avoid signed/unsigned operations.
+
+2011-06-22  Marek Polacek  <mpolacek@redhat.com>
+
+       [BZ #9696]
+       * stdlib/strtod_l.c (round_and_return): Set ERANGE instead of EDOM.
+
+diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
+index 2166a08..a8a7ea8 100644
+--- a/stdlib/strtod_l.c
++++ b/stdlib/strtod_l.c
+@@ -60,6 +60,7 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
+ #include <math.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <stdint.h>
+ 
+ /* The gmp headers need some configuration frobs.  */
+ #define HAVE_ALLOCA 1
+@@ -72,7 +73,6 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
+ #include "longlong.h"
+ #include "fpioconst.h"
+ 
+-#define NDEBUG 1
+ #include <assert.h>
+ 
+ 
+@@ -174,19 +174,19 @@ extern const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1];
+ /* Return a floating point number of the needed type according to the given
+    multi-precision number after possible rounding.  */
+ static FLOAT
+-round_and_return (mp_limb_t *retval, int exponent, int negative,
++round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
+ 		  mp_limb_t round_limb, mp_size_t round_bit, int more_bits)
+ {
+   if (exponent < MIN_EXP - 1)
+     {
+-      mp_size_t shift = MIN_EXP - 1 - exponent;
+-
+-      if (shift > MANT_DIG)
++      if (exponent < MIN_EXP - 1 - MANT_DIG)
+ 	{
+ 	  __set_errno (ERANGE);
+-	  return 0.0;
++	  return negative ? -0.0 : 0.0;
+ 	}
+ 
++      mp_size_t shift = MIN_EXP - 1 - exponent;
++
+       more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;
+       if (shift == MANT_DIG)
+ 	/* This is a special case to handle the very seldom case where
+@@ -233,6 +233,9 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
+       __set_errno (ERANGE);
+     }
+ 
++  if (exponent > MAX_EXP)
++    goto overflow;
++
+   if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0
+       && (more_bits || (retval[0] & 1) != 0
+ 	  || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0))
+@@ -258,6 +261,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
+     }
+ 
+   if (exponent > MAX_EXP)
++  overflow:
+     return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
+ 
+   return MPN2FLOAT (retval, exponent, negative);
+@@ -271,7 +275,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
+    factor for the resulting number (see code) multiply by it.  */
+ static const STRING_TYPE *
+ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
+-	    int *exponent
++	    intmax_t *exponent
+ #ifndef USE_WIDE_CHAR
+ 	    , const char *decimal, size_t decimal_len, const char *thousands
+ #endif
+@@ -301,6 +305,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
+ 	      cy += __mpn_add_1 (n, n, *nsize, low);
+ 	      if (cy != 0)
+ 		{
++		  assert (*nsize < MPNSIZE);
+ 		  n[*nsize] = cy;
+ 		  ++(*nsize);
+ 		}
+@@ -335,7 +340,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
+     }
+   while (--digcnt > 0);
+ 
+-  if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB)
++  if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt)
+     {
+       low *= _tens_in_limb[*exponent];
+       start = _tens_in_limb[cnt + *exponent];
+@@ -355,7 +360,10 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
+       cy = __mpn_mul_1 (n, n, *nsize, start);
+       cy += __mpn_add_1 (n, n, *nsize, low);
+       if (cy != 0)
+-	n[(*nsize)++] = cy;
++	{
++	  assert (*nsize < MPNSIZE);
++	  n[(*nsize)++] = cy;
++	}
+     }
+ 
+   return str;
+@@ -413,7 +421,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+ {
+   int negative;			/* The sign of the number.  */
+   MPN_VAR (num);		/* MP representation of the number.  */
+-  int exponent;			/* Exponent of the number.  */
++  intmax_t exponent;		/* Exponent of the number.  */
+ 
+   /* Numbers starting `0X' or `0x' have to be processed with base 16.  */
+   int base = 10;
+@@ -435,7 +443,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+   /* Points at the character following the integer and fractional digits.  */
+   const STRING_TYPE *expp;
+   /* Total number of digit and number of digits in integer part.  */
+-  int dig_no, int_no, lead_zero;
++  size_t dig_no, int_no, lead_zero;
+   /* Contains the last character read.  */
+   CHAR_TYPE c;
+ 
+@@ -767,7 +775,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+      are all or any is really a fractional digit will be decided
+      later.  */
+   int_no = dig_no;
+-  lead_zero = int_no == 0 ? -1 : 0;
++  lead_zero = int_no == 0 ? (size_t) -1 : 0;
+ 
+   /* Read the fractional digits.  A special case are the 'american
+      style' numbers like `16.' i.e. with decimal point but without
+@@ -789,12 +797,13 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+ 	     (base == 16 && ({ CHAR_TYPE lo = TOLOWER (c);
+ 			       lo >= L_('a') && lo <= L_('f'); })))
+ 	{
+-	  if (c != L_('0') && lead_zero == -1)
++	  if (c != L_('0') && lead_zero == (size_t) -1)
+ 	    lead_zero = dig_no - int_no;
+ 	  ++dig_no;
+ 	  c = *++cp;
+ 	}
+     }
++  assert (dig_no <= (uintmax_t) INTMAX_MAX);
+ 
+   /* Remember start of exponent (if any).  */
+   expp = cp;
+@@ -817,24 +826,80 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+ 
+       if (c >= L_('0') && c <= L_('9'))
+ 	{
+-	  int exp_limit;
++	  intmax_t exp_limit;
+ 
+ 	  /* Get the exponent limit. */
+ 	  if (base == 16)
+-	    exp_limit = (exp_negative ?
+-			 -MIN_EXP + MANT_DIG + 4 * int_no :
+-			 MAX_EXP - 4 * int_no + 4 * lead_zero + 3);
++	    {
++	      if (exp_negative)
++		{
++		  assert (int_no <= (uintmax_t) (INTMAX_MAX
++						 + MIN_EXP - MANT_DIG) / 4);
++		  exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no;
++		}
++	      else
++		{
++		  if (int_no)
++		    {
++		      assert (lead_zero == 0
++			      && int_no <= (uintmax_t) INTMAX_MAX / 4);
++		      exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3;
++		    }
++		  else if (lead_zero == (size_t) -1)
++		    {
++		      /* The number is zero and this limit is
++			 arbitrary.  */
++		      exp_limit = MAX_EXP + 3;
++		    }
++		  else
++		    {
++		      assert (lead_zero
++			      <= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4);
++		      exp_limit = (MAX_EXP
++				   + 4 * (intmax_t) lead_zero
++				   + 3);
++		    }
++		}
++	    }
+ 	  else
+-	    exp_limit = (exp_negative ?
+-			 -MIN_10_EXP + MANT_DIG + int_no :
+-			 MAX_10_EXP - int_no + lead_zero + 1);
++	    {
++	      if (exp_negative)
++		{
++		  assert (int_no
++			  <= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG));
++		  exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no;
++		}
++	      else
++		{
++		  if (int_no)
++		    {
++		      assert (lead_zero == 0
++			      && int_no <= (uintmax_t) INTMAX_MAX);
++		      exp_limit = MAX_10_EXP - (intmax_t) int_no + 1;
++		    }
++		  else if (lead_zero == (size_t) -1)
++		    {
++		      /* The number is zero and this limit is
++			 arbitrary.  */
++		      exp_limit = MAX_10_EXP + 1;
++		    }
++		  else
++		    {
++		      assert (lead_zero
++			      <= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1));
++		      exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1;
++		    }
++		}
++	    }
++
++	  if (exp_limit < 0)
++	    exp_limit = 0;
+ 
+ 	  do
+ 	    {
+-	      exponent *= 10;
+-	      exponent += c - L_('0');
+-
+-	      if (__builtin_expect (exponent > exp_limit, 0))
++	      if (__builtin_expect ((exponent > exp_limit / 10
++				     || (exponent == exp_limit / 10
++					 && c - L_('0') > exp_limit % 10)), 0))
+ 		/* The exponent is too large/small to represent a valid
+ 		   number.  */
+ 		{
+@@ -843,7 +908,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+ 		  /* We have to take care for special situation: a joker
+ 		     might have written "0.0e100000" which is in fact
+ 		     zero.  */
+-		  if (lead_zero == -1)
++		  if (lead_zero == (size_t) -1)
+ 		    result = negative ? -0.0 : 0.0;
+ 		  else
+ 		    {
+@@ -862,6 +927,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+ 		  /* NOTREACHED */
+ 		}
+ 
++	      exponent *= 10;
++	      exponent += c - L_('0');
++
+ 	      c = *++cp;
+ 	    }
+ 	  while (c >= L_('0') && c <= L_('9'));
+@@ -930,7 +998,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+ 	}
+ #endif
+       startp += lead_zero + decimal_len;
+-      exponent -= base == 16 ? 4 * lead_zero : lead_zero;
++      assert (lead_zero <= (base == 16
++			    ? (uintmax_t) INTMAX_MAX / 4
++			    : (uintmax_t) INTMAX_MAX));
++      assert (lead_zero <= (base == 16
++			    ? ((uintmax_t) exponent
++			       - (uintmax_t) INTMAX_MIN) / 4
++			    : ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN)));
++      exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero;
+       dig_no -= lead_zero;
+     }
+ 
+@@ -972,7 +1047,10 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+ 	}
+ 
+       /* Adjust the exponent for the bits we are shifting in.  */
+-      exponent += bits - 1 + (int_no - 1) * 4;
++      assert (int_no <= (uintmax_t) (exponent < 0
++				     ? (INTMAX_MAX - bits + 1) / 4
++				     : (INTMAX_MAX - exponent - bits + 1) / 4));
++      exponent += bits - 1 + ((intmax_t) int_no - 1) * 4;
+ 
+       while (--dig_no > 0 && idx >= 0)
+ 	{
+@@ -1024,13 +1102,15 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+      really integer digits or belong to the fractional part; i.e. we normalize
+      123e-2 to 1.23.  */
+   {
+-    register int incr = (exponent < 0 ? MAX (-int_no, exponent)
+-			 : MIN (dig_no - int_no, exponent));
++    register intmax_t incr = (exponent < 0
++			      ? MAX (-(intmax_t) int_no, exponent)
++			      : MIN ((intmax_t) dig_no - (intmax_t) int_no,
++				     exponent));
+     int_no += incr;
+     exponent -= incr;
+   }
+ 
+-  if (__builtin_expect (int_no + exponent > MAX_10_EXP + 1, 0))
++  if (__builtin_expect (exponent > MAX_10_EXP + 1 - (intmax_t) int_no, 0))
+     {
+       __set_errno (ERANGE);
+       return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
+@@ -1215,7 +1295,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+        digits we should have enough bits for the result.  The remaining
+        decimal digits give us the information that more bits are following.
+        This can be used while rounding.  (Two added as a safety margin.)  */
+-    if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2)
++    if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2)
+       {
+ 	dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2;
+ 	more_bits = 1;
+@@ -1223,7 +1303,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
+     else
+       more_bits = 0;
+ 
+-    neg_exp = dig_no - int_no - exponent;
++    neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent;
+ 
+     /* Construct the denominator.  */
+     densize = 0;

Added: glibc-package/branches/eglibc-2.16/debian/patches/hurd-i386/unsubmitted-gnumach.defs.diff
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/patches/hurd-i386/unsubmitted-gnumach.defs.diff	                        (rev 0)
+++ glibc-package/branches/eglibc-2.16/debian/patches/hurd-i386/unsubmitted-gnumach.defs.diff	2012-10-26 14:51:03 UTC (rev 5358)
@@ -0,0 +1,39 @@
+diff --git a/mach/Makefile b/mach/Makefile
+index 00de7a5..eaf0787 100644
+--- a/mach/Makefile
++++ b/mach/Makefile
+@@ -112,7 +112,7 @@ ifndef mach-shortcuts
+ # $(mach-shortcuts) will be set, and that will change how
+ # mach_interface.defs is processed: it will get the -D flags below.
+ user-interfaces := $(filter-out $(mach-interface-list:%=mach/%) \
+-				mach/mach_port mach/mach_host mach/mach4 \
++				mach/mach_port mach/mach_host mach/mach4 mach/gnumach \
+ 				device/device_request,\
+ 				$(user-interfaces))
+ endif
+diff --git a/sysdeps/mach/configure b/sysdeps/mach/configure
+index b41449e..8b1b80b 100644
+--- a/sysdeps/mach/configure
++++ b/sysdeps/mach/configure
+@@ -411,7 +411,7 @@ if test $libc_cv_mach_task_creation_time = no; then
+ fi
+ 
+ mach_interface_list=
+-for ifc in mach mach4 \
++for ifc in mach mach4 gnumach \
+ 	   clock clock_priv host_priv host_security ledger lock_set \
+ 	   processor processor_set task thread_act vm_map \
+ 	   memory_object memory_object_default default_pager \
+diff --git a/sysdeps/mach/configure.in b/sysdeps/mach/configure.in
+index 2f82c3a..101a884 100644
+--- a/sysdeps/mach/configure.in
++++ b/sysdeps/mach/configure.in
+@@ -53,7 +53,7 @@ dnl but we don't do a check for that here because in a bare
+ dnl environment the compile against those headers will fail.
+ dnl
+ mach_interface_list=
+-for ifc in mach mach4 \
++for ifc in mach mach4 gnumach \
+ 	   clock clock_priv host_priv host_security ledger lock_set \
+ 	   processor processor_set task thread_act vm_map \
+ 	   memory_object memory_object_default default_pager \

Added: glibc-package/branches/eglibc-2.16/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff	                        (rev 0)
+++ glibc-package/branches/eglibc-2.16/debian/patches/kfreebsd/local-getaddrinfo-freebsd-kernel.diff	2012-10-26 14:51:03 UTC (rev 5358)
@@ -0,0 +1,19 @@
+--- a/sysdeps/posix/getaddrinfo.c
++++ b/sysdeps/posix/getaddrinfo.c
+@@ -2267,8 +2267,15 @@
+ 		}
+ 
+ 	      socklen_t sl = sizeof (results[i].source_addr);
++	      struct sockaddr sa = *q->ai_addr;
++#ifdef __FreeBSD_kernel__
++	      /* The FreeBSD kernel doesn't allow connections on port 0. Use
++	         port 1 instead, as on the FreeBSD libc. */
++	      if (((struct sockaddr_in *)&sa)->sin_port == htons(0))
++		((struct sockaddr_in *)&sa)->sin_port = htons(1);
++#endif
+ 	      if (fd != -1
+-		  && __connect (fd, q->ai_addr, q->ai_addrlen) == 0
++		  && __connect (fd, &sa, q->ai_addrlen) == 0
+ 		  && __getsockname (fd,
+ 				    (struct sockaddr *) &results[i].source_addr,
+ 				    &sl) == 0)

Modified: glibc-package/branches/eglibc-2.16/debian/patches/series
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/patches/series	2012-10-26 14:30:38 UTC (rev 5357)
+++ glibc-package/branches/eglibc-2.16/debian/patches/series	2012-10-26 14:51:03 UTC (rev 5358)
@@ -117,6 +117,7 @@
 hurd-i386/submitted-sendto.diff
 hurd-i386/tg-chflags.diff
 hurd-i386/submitted-exec_filename.diff
+hurd-i386/unsubmitted-gnumach.defs.diff
 
 i386/local-biarch.diff
 i386/local-cmov.diff
@@ -135,6 +136,7 @@
 kfreebsd/local-grantpt.diff
 kfreebsd/local-sysdeps.diff
 kfreebsd/local-scripts.diff
+kfreebsd/local-getaddrinfo-freebsd-kernel.diff
 
 m68k/local-dwarf2-buildfix.diff
 m68k/local-fpic.diff
@@ -228,3 +230,4 @@
 any/local-revert-fclose-posix2008.diff
 any/local-disable-libnss-db.diff
 any/local-sunrpc-dos.diff
+any/cvs-strtod-overflow.diff

Modified: glibc-package/branches/eglibc-2.16/debian/sysdeps/linux.mk
===================================================================
--- glibc-package/branches/eglibc-2.16/debian/sysdeps/linux.mk	2012-10-26 14:30:38 UTC (rev 5357)
+++ glibc-package/branches/eglibc-2.16/debian/sysdeps/linux.mk	2012-10-26 14:51:03 UTC (rev 5358)
@@ -62,8 +62,8 @@
 # into an integer so it can be easily compared and then does so.
 CURRENT_KERNEL_VERSION=$(shell uname -r)
 define kernel_check
-(minimum=$$((`echo $(1) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)); \
-current=$$((`echo $(CURRENT_KERNEL_VERSION) | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 65536 + \2 \* 256 + \3/'`)); \
+(minimum=$$((`echo $(1) | sed 's/^\([0-9]*\.[0-9]*\)\([^.0-9]\|$$\)/\1.0\2/; s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`)); \
+current=$$((`echo $(CURRENT_KERNEL_VERSION) | sed 's/^\([0-9]*\.[0-9]*\)\([^.0-9]\|$$\)/\1.0\2/; s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \* 10000 + \2 \* 100 + \3/'`)); \
 if [ $$current -lt $$minimum ]; then \
   false; \
 fi)


Reply to: