我正在尝试使用HP Fortify SCA扫描RHEL7.5服务器内核[linux-3.10.0-862.el7]。我在virtualbox上的RHEL工作站操作系统上。
在工作目录中,我正在做
“ sourceanalyzer -b mybuild非接触式制造”
内核本身使用“ make”进行编译。 Sourceanalyzer完成了一些代码,但在涉及以下内容时似乎出错了:
CC arch / x86 / purgatory / purgatory.o
Fortify是否可以扫描内核?我需要使用更复杂的命令进行扫描吗?
输出错误段为:
非接触脚本 /home/sail/.fortify/sca18.1/build/myscan/build6382721854835965459/gcc 用args调用:-Wp,-MD,arch / x86 / purgatory / .purgatory.o.d -nostdinc -isystem非接触式脚本/home/sail/.fortify/sca18.1/build/myscan/build6382721854835965459/gcc 用args调用:-print-file-name = include /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include -I./arch/x86/include -Iarch / x86 / include /生成的-Iinclude -I./arch/x86/include/uapi -Iarch / x86 / include /生成的/ uapi -I./include/uapi -Iinclude /生成的/ uapi -include ./include/ linux / kconfig.h -D__KERNEL__ -fno-strict-aliasing -Wall -Wstrict-prototypes -fno-zero-initialized-in-bss -fno-builtin -ffreestanding -c -MD -Os -mcmodel = large -m64 -DKBUILD_STR( s)=#s -DKBUILD_BASENAME = KBUILD_STR(炼狱)-DKBUILD_MODNAME = KBUILD_STR(炼狱)-c -o arch / x86 / purgatory / .tmp_purgatory.o arch / x86 / purgatory / purgatory.c /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include [警告]:文件名为 找不到[警告]:找不到的文件[警告]:文件参数:没有 发现[警告]:文件/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include 找不到gcc:错误:调用:没有这样的文件或目录gcc:错误: 带有:没有这样的文件或目录gcc:错误:args ::没有这样的文件或目录 目录objdump:'arch / x86 / purgatory / .tmp_purgatory.o':没有这样的文件 mv:无法统计“ arch / x86 / purgatory / .tmp_purgatory.o”:没有此类文件或 目录 make [1]: * [arch / x86 / purgatory / purgatory.o]错误1 make: * [archprepare]错误2
答案 0 :(得分:0)
简短的答案是,当Fortify(或任何其他静态分析器)无法与构建系统配合使用时,应将其集成到编译器中。也就是说,告诉Makefile将您的Shell脚本用于编译器:
make GCC=gcc_and_fortify.sh
gcc_and_fortify.sh脚本应如下所示:
#!/bin/sh
ARGS=$@
# run GCC
gcc $ARGS
# run Fortify
sourceanalyzer -b my_project $ARGS