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

Björn-Egil Dahlberg egil@REDACTED
Wed Dec 22 14:37:38 CET 2010


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
>



More information about the erlang-bugs mailing list