[cairo] [PATCH] Harden make-cairo-test-constructors.sh

Andrea Canciani ranma42 at gmail.com
Thu Mar 12 09:02:02 PDT 2015


The make-cairo-test-constructors.sh script executes several commands
without checking their success. This can lead to undetected errors,
like those fixed in 86fad78fcd2bf987249890aea4eabcce02a58f45.

The script now exits with an error status if no file is
input. Moreover, it sets the '-e' flag, so that if a command fails,
the whole script is immediately terminated with an error.

In the Makefile.am, the script result is now checked and the target
file is removed upon error. This ensures that the
'cairo-test-constructors.c' target completes succesfully only if no
error occurred.
---
 test/Makefile.am                     | 2 +-
 test/make-cairo-test-constructors.sh | 4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/test/Makefile.am b/test/Makefile.am
index 950629b..b2fcd27 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -81,7 +81,7 @@ noinst_SCRIPTS = check-refs.sh
 TESTS += cairo-test-suite$(EXEEXT)
 
 cairo-test-constructors.c: Makefile $(test_sources) make-cairo-test-constructors.sh
-	(cd $(srcdir) && sh ./make-cairo-test-constructors.sh $(test_sources)) > $@
+	(cd $(srcdir) && sh ./make-cairo-test-constructors.sh $(test_sources)) > $@ || (rm $@ ; exit 1)
 
 cairo_test_suite_SOURCES = 		\
 	$(cairo_test_suite_sources)	\
diff --git a/test/make-cairo-test-constructors.sh b/test/make-cairo-test-constructors.sh
index cb1391e..a03d61c 100644
--- a/test/make-cairo-test-constructors.sh
+++ b/test/make-cairo-test-constructors.sh
@@ -1,8 +1,10 @@
 #! /bin/sh
 
+set -e
+
 if test $# -eq 0; then
     echo "$0: no input files." >&2
-    exit 0
+    exit 1
 fi
 
 cat <<HERE
-- 
1.9.5 (Apple Git-50.3)



More information about the cairo mailing list