我正在尝试构建一个非常简单的C程序,以包含在.deb包中。该项目的大部分内容都是Python。当此程序包含在.deb包中时,lintian
会向我发出hardening-no-fortify-functions
警告。
在进一步阅读时,似乎Debian希望您在构建C程序时包含某些标志,并且可以使用dpkg-buildflags --get CFLAGS
检索这些标志。
我的初始构建标志如下所示:
gcc -Wall -pedantic -o somefile somefile.c
现在,我正在建设
CFLAGS=`dpkg-buildflags --get CFLAGS`
gcc $CFLAGS -o somefile somefile.c
但是,我继续收到hardening-no-fortify-functions
警告。我在这做错了什么?这现在是假阳性吗?我可以添加覆盖并忘掉它吗?
答案 0 :(得分:2)
有几种可能性,第三种似乎最有可能,但我已经提到过1和2,以防它们也引起你的问题:
dpkg-buildflags --get CFLAGS
正在回复错误的内容。在我的系统上它返回:
-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security
如果你只是从命令行执行它,你会得到什么?
您的CFLAGS
值未传递给gcc
。我假设你在这里使用Makefile
;这两个陈述实际上是相邻的吗?你不想要CFLAGS =
(有空格)吗?或者你在命令行设置CFLAGS
,在这种情况下,你应该知道debian构建工具的东西剥离了大多数没有启动DEB_
的东西的环境,所以你需要设置{{1}无论是什么构建包。
CFLAGS
不足以消除加固错误。让我们来看看lintian错误:http://lintian.debian.org/tags/hardening-no-fortify-functions.html并注意它说'确定性:疯狂猜测'。这并不能激发人们对它是正确的信心。但是,我怀疑实际问题是:你没有带来CFLAGS
。尝试:
LDFLAGS
$ dpkg-buildflags --get LDFLAGS
您需要链接器上的那些。
这种方法似乎有效(即至少编译):
-Wl,-Bsymbolic-functions -Wl,-z,relro