2017-11-10 7 views
0

私は要件を満たし、実行可能バイナリは、https://github.com/slimm609/checksec.shによって_FORTIFY_SOURCEやスタックプロテクターなどのbuildroot gccセキュリティビルドオプションを有効にするにはどうすればいいですか?

をチェックをパスしなければならないので、私は私のツールチェーンのgccのための構成を構築し、次の有効:

_D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now -fstack-protector-all 

が、それは時の出力の任意の警告MSGのがありませんでした私はホストgccのビルドを使用すると、適切な警告メッセージを表示しながら、コンパイルしています。

[email protected]:~/tmp/test$ /opt/buildroot-gcc463/usr/bin/mipsel-buildroot-linux-uclibc-gcc -Wall -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now -fstack-protector-all -fpie -pie test.c -o testjason 

はありません任意の警報出力がありました:

は、以下の私のビルドのログました。

ホストのx86 GCCにある間:2:関数で 'のmemcpy' 'メイン' からインラインファイルでTEST.Cから /usr/include/string.h:640:0、 からインクルードtest.c:28:8:/usr/include/x86_64-linux-gnu/bits/string3.h:51:3:警告: への呼び出し__builtin___memcpy_chkは常に宛先バッファをオーバーフローさせます[デフォルトで有効になります] return __builtin___memcpy_chk(__dest 、__src、 __len、__ bos0(__dest)); ^関数 'memset'では、test.cの 'main'から がインライン化されています:35:8:/usr/include/x86_64-linux-gnu/bits/string3.h:84:3:警告: を呼び出す__builtin___memset_chk will常にオーバーフロー先のバッファ[デフォルトで有効] __builtin___memset_chk(__dest、__ch、 __len、__bos0(__dest));を返します。

は、ビルドツールチェーンのために、私は唯一のパッケージ/ GCC/gcc.mkファイルでlibssp有効:

+0

HOST_GCC_COMMON_CONF_OPT = \ --target = $(GNU_TARGET_NAME) \ --with-SYSROOT --enable-libssp \ = $(STAGING_DIR)\ --disable -__ cxa_atexit \ --with-gnuの-LD \ --disable-multilib \ --with-gmp = $(HOST_DIR)/ usr \ --with-mpfr = $(HOST_DIR)/ usr –

答えて

1

あなたbuildrootコンパイラのパスが、それはuClibcをターゲットとGCC 4.6であることを示唆しています。このコンパイラのバージョンには、ホスト上で表示される警告はありませんでした。

また、実際の意味ではuclibcは_FORTIFY_SOURCEをサポートしていないため、その機能でツールチェーンを使用する必要がある場合は、uclibcが間違った選択です。

関連する問題