Hello community,

here is the log from the commit of package binutils for openSUSE:Factory 
checked in at 2012-09-13 06:59:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/binutils (Old)
 and      /work/SRC/openSUSE:Factory/.binutils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "binutils", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/binutils/binutils.changes        2012-06-26 
15:14:57.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.binutils.new/binutils.changes   2012-09-13 
06:59:24.000000000 +0200
@@ -1,0 +2,15 @@
+Fri Sep  7 12:42:18 UTC 2012 - [email protected]
+
+- add makeinfo as explicit buildrequire
+
+-------------------------------------------------------------------
+Mon Sep  3 09:59:53 UTC 2012 - [email protected]
+
+- Enable threaded linking in gold.
+
+-------------------------------------------------------------------
+Mon Sep  3 09:03:59 UTC 2012 - [email protected]
+
+- Add patch to fix libiberty integer overflow.  [bnc#776968]
+
+-------------------------------------------------------------------
cross-alpha-binutils.changes: same change
cross-arm-binutils.changes: same change
cross-avr-binutils.changes: same change
cross-hppa-binutils.changes: same change
cross-hppa64-binutils.changes: same change
cross-i386-binutils.changes: same change
cross-ia64-binutils.changes: same change
cross-mips-binutils.changes: same change
cross-ppc-binutils.changes: same change
cross-ppc64-binutils.changes: same change
cross-s390-binutils.changes: same change
cross-s390x-binutils.changes: same change
cross-sparc-binutils.changes: same change
cross-spu-binutils.changes: same change
cross-x86_64-binutils.changes: same change

New:
----
  binutils-2.22-objalloc.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ binutils.spec ++++++
--- /var/tmp/diff_new_pack.foq401/_old  2012-09-13 06:59:31.000000000 +0200
+++ /var/tmp/diff_new_pack.foq401/_new  2012-09-13 06:59:31.000000000 +0200
@@ -25,6 +25,9 @@
 %if 0%{suse_version} >= 1210
 BuildRequires:  glibc-devel-static
 %endif
+%if 0%{suse_version} > 1220
+BuildRequires:  makeinfo
+%endif
 # for some gold tests
 BuildRequires:  bc
 %if 0%{suse_version} > 1110
@@ -93,6 +96,7 @@
 Patch18:        gold-depend-on-opcodes.diff
 Patch19:        bso12451.diff
 Patch20:        bso13449.diff
+Patch21:        binutils-2.22-objalloc.patch
 Patch90:        cross-avr-nesc-as.patch
 Patch92:        cross-avr-omit_section_dynsym.patch
 Patch93:        avr-binutils-relocs.patch
@@ -160,6 +164,7 @@
 %patch18
 %patch19 -p1
 %patch20 -p1
+%patch21
 %if "%{TARGET}" == "avr"
 cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
 %patch90
@@ -217,6 +222,7 @@
        --enable-plugins \
 %ifarch %gold_archs
        --enable-gold \
+       --enable-threads \
 %endif
        --enable-shared
 make %{?_smp_mflags} all-bfd TARGET-bfd=headers

++++++ cross-alpha-binutils.spec ++++++
--- /var/tmp/diff_new_pack.foq401/_old  2012-09-13 06:59:31.000000000 +0200
+++ /var/tmp/diff_new_pack.foq401/_new  2012-09-13 06:59:31.000000000 +0200
@@ -28,6 +28,9 @@
 %if 0%{suse_version} >= 1210
 BuildRequires:  glibc-devel-static
 %endif
+%if 0%{suse_version} > 1220
+BuildRequires:  makeinfo
+%endif
 # for some gold tests
 BuildRequires:  bc
 %if 0%{suse_version} > 1110
@@ -96,6 +99,7 @@
 Patch18:        gold-depend-on-opcodes.diff
 Patch19:        bso12451.diff
 Patch20:        bso13449.diff
+Patch21:        binutils-2.22-objalloc.patch
 Patch90:        cross-avr-nesc-as.patch
 Patch92:        cross-avr-omit_section_dynsym.patch
 Patch93:        avr-binutils-relocs.patch
@@ -163,6 +167,7 @@
 %patch18
 %patch19 -p1
 %patch20 -p1
+%patch21
 %if "%{TARGET}" == "avr"
 cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
 %patch90
@@ -220,6 +225,7 @@
        --enable-plugins \
 %ifarch %gold_archs
        --enable-gold \
+       --enable-threads \
 %endif
        --enable-shared
 make %{?_smp_mflags} all-bfd TARGET-bfd=headers

cross-arm-binutils.spec: same change
cross-avr-binutils.spec: same change
cross-hppa-binutils.spec: same change
cross-hppa64-binutils.spec: same change
cross-i386-binutils.spec: same change
cross-ia64-binutils.spec: same change
cross-mips-binutils.spec: same change
cross-ppc-binutils.spec: same change
cross-ppc64-binutils.spec: same change
cross-s390-binutils.spec: same change
cross-s390x-binutils.spec: same change
cross-sparc-binutils.spec: same change
cross-spu-binutils.spec: same change
cross-x86_64-binutils.spec: same change
++++++ binutils-2.22-objalloc.patch ++++++
This patches fixes an integer overflow in libiberty, which leads to
crashes in binutils.  The long version of the objalloc_alloc macro
would have needed another conditional, so I removed that and replaced
it with a call to the actual implementation.

This has been compiled-tested only.  We do not use this function in
GCC, therefore I want to commit this just to the trunk.

2012-08-29  Florian Weimer  <[email protected]>

        PR other/54411
        * objalloc.h (objalloc_alloc): Always use the simple definition of
        the macro.

2012-08-29  Florian Weimer  <[email protected]>

        PR other/54411
        * objalloc.c (_objalloc_alloc): Add overflow check covering
        alignment and CHUNK_HEADER_SIZE addition.

Index: include/objalloc.h
===================================================================
--- include/objalloc.h  (revision 190780)
+++ include/objalloc.h  (working copy)
@@ -1,5 +1,5 @@
 /* objalloc.h -- routines to allocate memory for objects
-   Copyright 1997, 2001 Free Software Foundation, Inc.
+   Copyright 1997-2012 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Solutions.
 
 This program is free software; you can redistribute it and/or modify it
@@ -71,38 +71,8 @@
 
 extern void *_objalloc_alloc (struct objalloc *, unsigned long);
 
-/* The macro version of objalloc_alloc.  We only define this if using
-   gcc, because otherwise we would have to evaluate the arguments
-   multiple times, or use a temporary field as obstack.h does.  */
-
-#if defined (__GNUC__) && defined (__STDC__) && __STDC__
-
-/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
-   does not implement __extension__.  But that compiler doesn't define
-   __GNUC_MINOR__.  */
-#if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
-#define __extension__
-#endif
-
-#define objalloc_alloc(o, l)                                           \
-  __extension__                                                                
\
-  ({ struct objalloc *__o = (o);                                       \
-     unsigned long __len = (l);                                                
\
-     if (__len == 0)                                                   \
-       __len = 1;                                                      \
-     __len = (__len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1);     \
-     (__len <= __o->current_space                                      \
-      ? (__o->current_ptr += __len,                                    \
-        __o->current_space -= __len,                                   \
-        (void *) (__o->current_ptr - __len))                           \
-      : _objalloc_alloc (__o, __len)); })
-
-#else /* ! __GNUC__ */
-
 #define objalloc_alloc(o, l) _objalloc_alloc ((o), (l))
 
-#endif /* ! __GNUC__ */
-
 /* Free an entire objalloc structure.  */
 
 extern void objalloc_free (struct objalloc *);
Index: libiberty/objalloc.c
===================================================================
--- libiberty/objalloc.c        (revision 190780)
+++ libiberty/objalloc.c        (working copy)
@@ -1,5 +1,5 @@
 /* objalloc.c -- routines to allocate memory for objects
-   Copyright 1997 Free Software Foundation, Inc.
+   Copyright 1997-2012 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Solutions.
 
 This program is free software; you can redistribute it and/or modify it
@@ -112,8 +112,9 @@
 /* Allocate space from an objalloc structure.  */
 
 PTR
-_objalloc_alloc (struct objalloc *o, unsigned long len)
+_objalloc_alloc (struct objalloc *o, unsigned long original_len)
 {
+  unsigned long len = original_len;
   /* We avoid confusion from zero sized objects by always allocating
      at least 1 byte.  */
   if (len == 0)
@@ -121,6 +122,11 @@
 
   len = (len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1);
 
+  /* Check for overflow in the alignment operator above and the malloc
+     argument below. */
+  if (len + CHUNK_HEADER_SIZE < original_len)
+    return NULL;
+
   if (len <= o->current_space)
     {
       o->current_ptr += len;

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to