[erlang-bugs] R14B01: buffer overflow detected during compilation with -D_FORTIFY_SOURCE=2 (x86_64)

Nico Kruber kruber@REDACTED
Wed Dec 22 15:27:30 CET 2010


I also tried with a clean R14B01 (without distro-patches and without all the build service "overhead" from the log I provided, e.g. environment variables) - same result.

so I just used this (openSUSE 11.3, x86_64, dual-core CPU, GCC is 4.5.0_20100604-1.12):

./configure --with-ssl=/usr --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --enable-shared-zlib
make

If you can access the openSUSE BuildService, you can exactly reproduce the environment I (normally) built my packages on:
(you can install the osc command line client from a repository in http://software.opensuse.org/download/openSUSE:/Tools/ available for a lot of distributions)

osc checkout home:tschuett erlang
cd home\:tschuett/erlang
osc build --ccache openSUSE_11.3 erlang.spec

(--ccache is just for performance in case of re-compilation)

It will download all rpms required to build the package and set up a chroot environment for it.
You can remove the distribution specific patches as well as my workaround setting D_FORTIFY_SOURCE=1 in the .spec file.

The error message is _always_ there and always in the same file.

Nico

On Wednesday 22 December 2010 14:37:38 Björn-Egil Dahlberg wrote:
> Hi,
> 
> I am trying to reproduce this error, but I am sad to say that I seem to 
> be missing something. Now, I am not a build environment expert but this 
> should be straight forward right?
> 
> First off, this is otp_src_R14B01 with no distribution specific patches 
> applied? Seems unlikely, since both Gentoo and openSUSE hits this error.
> 
> Now, I don't have any gentoo or opensuse x86_64 available, I have a 
> 32-bit gentoo which doesn't seem to produce this error (i didn't expect 
> it to), and plenty of SuSE sled/sles 10.1 - 2 x86_64, which doesn't have 
> the compiler.
> 
> I do have some newer x86_64 Ubuntu's so I tried with gcc (Ubuntu 
> 4.4.3-4ubuntu5) 4.4.3. This compiler should have the fortify sources 
> patch (default since 9.10). -D_FORTIFY_SOURCE=2 shouldn't be needed 
> since -02 and higher implies this option. A small testprogram confirms 
> that -02 and memcpy check works anyways.
> 
> But, No luck.
> 
> I tried emulating what Nico did in his build script, like this,
>  > tar -zxvf otp_src_R14B01.tar.gz
>  > cd otp_src_R14B01
>  >  export ERL_TOP=`pwd`
>  >  export 'CFLAGS=-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 
> -fstack-protector -funwind-tables -fasynchronous-unwind-tables 
> -fno-strict-aliasing'
>  >  export 'CXXFLAGS=-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 
> -fstack-protector -funwind-tables -fasynchronous-unwind-tables 
> -fno-strict-aliasing'
>  >  export FFLAGS='-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 
> -fstack-protector -funwind-tables -fasynchronous-unwind-tables'
>  >  ./configure --host=x86_64-unknown-linux-gnu 
> --build=x86_64-unknown-linux-gnu --with-ssl=/usr --enable-threads 
> --enable-smp-support --enable-kernel-poll --enable-hipe --enable-shared-zlib
>  > ulimit -c unlimited
>  > make
> 
> No errors, all is great.
> 
> 
> So something is wrong. Either in the assumptions or the setup. 
> Everything from stack-protectors, valgrind and other fortifications says 
> everything is fine.
> 
> Is the error consistent? Does it appear everytime and on the same file? 
> hipe_rtl.erl? It should anyways.
> 
> Could someone please give me some pointers on how to reproduce this?
> 
> // Björn-Egil
>     Erlang/OTP
> 
> 
> 
> On 2010-12-21 11:56, Christian Faulhammer wrote:
> > Hi,
> >
> > Kenneth Lundin<kenneth.lundin@REDACTED>:
> >> Has -D_FORTIFY_SOURCE been tried on R14B as well and did not show any
> >> buffer overflow?
> >
> >   There would have been reports (I maintain the package for Gentoo,
> > where users build the package on their system)...and there were none.
> > We use FORTIFY_SOURCE for some time now.
> >
> >> As I understand it -D_FORTIFY_SOURCE is a patch to GCC developed by
> >> Redhat and =2 can also report buffer flow for code that is correct.
> >
> >   It is included in the trunk version and used by many distributions
> > nowadays, especially for the server/hardened systems.
> >
> >> If this buffer overflow indeed is a real bug then of course we want to
> >> find it and correct it.
> >
> >   Would be nice.
> >
> > V-Li
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20101222/270c9fbc/attachment.bin>


More information about the erlang-bugs mailing list