]> ruderich.org/simon Gitweb - blhc/blhc.git/commitdiff
Check for CMake version which obeyed CPPFLAGS.
authorSimon Ruderich <simon@ruderich.org>
Sat, 31 Mar 2012 13:10:14 +0000 (15:10 +0200)
committerSimon Ruderich <simon@ruderich.org>
Sat, 31 Mar 2012 13:10:14 +0000 (15:10 +0200)
Thanks to Aron Xu for informing me of this issue. For more information
see Debian bug #653916.

MANIFEST
bin/blhc
t/logs/debian-cmake [new file with mode: 0644]
t/tests.t

index 9764e063834e6402b250d06a68ce800ca0c71a83..0102914adf5493dcd166349cc8b25f08b4542dd6 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -22,6 +22,7 @@ t/logs/c++
 t/logs/cc
 t/logs/configure
 t/logs/debian
+t/logs/debian-cmake
 t/logs/debian-hardening-wrapper
 t/logs/empty
 t/logs/g++
index 7f1fd84fe1b078841eebbcd06a1c4f83cd6a5e2c..5bbfe73255836fd23bba513edaf9f2af1734ba73 100755 (executable)
--- a/bin/blhc
+++ b/bin/blhc
@@ -209,6 +209,7 @@ my %exit_code = (
     non_verbose_build    => 1 << 2,
     flags_missing        => 1 << 3,
     hardening_wrapper    => 1 << 4,
+    invalid_cmake        => 1 << 5,
 );
 
 # Statistics of missing flags and non-verbose build commands. Used for
@@ -253,6 +254,14 @@ sub error_non_verbose_build {
            error_color(':', 'yellow'),
            $line;
 }
+sub error_invalid_cmake {
+    my ($version) = @_;
+
+    printf "%s%s %s\n",
+            error_color('INVALID CMAKE', 'red'),
+            error_color(':', 'yellow'),
+            $version;
+}
 sub error_hardening_wrapper {
     printf "%s%s %s\n",
             error_color('HARDENING WRAPPER', 'red'),
@@ -494,6 +503,23 @@ FILE: foreach my $file (@ARGV) {
             }
         }
 
+        # The following two versions of CMake in Debian obeyed CPPFLAGS, but
+        # this was later dropped because upstream rejected the patch. Thus
+        # build logs with these versions will have fortify hardening flags
+        # enabled, even though they may be not correctly set and are missing
+        # when build with later CMake versions. Thanks to Aron Xu for letting
+        # me know.
+        if ($line =~ /^Package versions: /
+                and $line =~ /\bcmake_(\S+)/
+                and ($1 eq '2.8.7-1' or $1 eq '2.8.7-2')) {
+            if (not $option_buildd) {
+                error_invalid_cmake($1);
+            } else {
+                print "W-invalid-cmake-used $1\n";
+            }
+            $exit |= $exit_code{invalid_cmake};
+        }
+
         # If hardening wrapper is used (wraps calls to gcc and adds hardening
         # flags automatically) we can't perform any checks, abort.
         if ($line =~ /^Build-Depends: .*\bhardening-wrapper\b/) {
diff --git a/t/logs/debian-cmake b/t/logs/debian-cmake
new file mode 100644 (file)
index 0000000..20b4072
--- /dev/null
@@ -0,0 +1,11 @@
+Package versions: ... cmake_2.8.7-2 cmake-data_2.8.7-2 ...
+
+dpkg-buildpackage: source package test
+
+gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -c test-a.c
+gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -c test-b.c
+gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -c test-c.c
+gcc -g -O3 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -c test-d.c
+gcc -Wl,-z,relro -o test test-a.o test-b.o test-c.o -ltest
+
+Build finished at 20120308-1648
index 0d9281a583003b4f28d58624e00a9c9c5317119a..a4ccf604757fccd969d96b6e95abdfb59bd40f97 100644 (file)
--- a/t/tests.t
+++ b/t/tests.t
@@ -19,7 +19,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 104;
+use Test::More tests => 108;
 
 
 sub is_blhc {
@@ -565,6 +565,10 @@ CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -c `dpkg-buildflags --get LDFLAGS` t
 LDFLAGS missing (-Wl,-z,relro): gcc -o test test.o `dpkg-buildflags --get CFLAGS`
 ';
 
+is_blhc 'debian-cmake', '', 32,
+        'INVALID CMAKE: 2.8.7-2
+';
+
 my $debian_hardening_wrapper =
         'HARDENING WRAPPER: no checks possible, aborting
 ';
@@ -597,6 +601,10 @@ is_blhc 'make', '--buildd', 1,
         'W-no-compiler-commands
 ';
 
+is_blhc 'debian-cmake', '--buildd', 32,
+        'W-invalid-cmake-used 2.8.7-2
+';
+
 
 # multiple files