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

Andrea Canciani ranma42 at gmail.com
Wed Mar 11 07:29:26 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.

Setting the '-e' flag and writing to a temporary file ensures that the
'cairo-test-constructors.c' target completes succesfully only if no
error occurred.
---
 test/Makefile.am                     | 3 ++-
 test/make-cairo-test-constructors.sh | 2 ++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/test/Makefile.am b/test/Makefile.am
index 950629b..a56e7ff 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -81,7 +81,8 @@ 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)) > $@.tmp
+	mv $@.tmp $@
 
 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..9b78eba 100644
--- a/test/make-cairo-test-constructors.sh
+++ b/test/make-cairo-test-constructors.sh
@@ -1,5 +1,7 @@
 #! /bin/sh
 
+set -e
+
 if test $# -eq 0; then
     echo "$0: no input files." >&2
     exit 0
-- 
1.9.5 (Apple Git-50.3)



More information about the cairo mailing list