From e19862ceafbaaa82e8eb869e1c1ba45d0ecba515 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 9 May 2012 03:23:29 +0200 Subject: [PATCH 1/1] sh-quote tests: Make tests stricter. * tests/test-sh-quote.c (check_one): Check the return value of shell_quote_copy. (main): Check a string with a CR character. Check a string that contains UCHAR_MAX. --- ChangeLog | 8 ++++++++ tests/test-sh-quote.c | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1e5871db5..3e8ded4fd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-05-08 Bruno Haible + + sh-quote tests: Make tests stricter. + * tests/test-sh-quote.c (check_one): Check the return value of + shell_quote_copy. + (main): Check a string with a CR character. Check a string that + contains UCHAR_MAX. + 2012-05-08 Akim Demaille warnings.m4: provide a means to specify the program to compile. diff --git a/tests/test-sh-quote.c b/tests/test-sh-quote.c index 8ca154121..2b4657c26 100644 --- a/tests/test-sh-quote.c +++ b/tests/test-sh-quote.c @@ -43,6 +43,7 @@ check_one (const char *input, const char *expected) memset (buf, '\0', output_len + 1); buf[output_len + 1] = '%'; bufend = shell_quote_copy (buf, input); + ASSERT (bufend == buf + output_len); ASSERT (memcmp (buf, output, output_len + 1) == 0); ASSERT (buf[output_len + 1] == '%'); @@ -68,6 +69,7 @@ main (void) /* Whitespace would be interpreted as argument separator by the shell. */ check_one ("foo\tbar", "'foo\tbar'"); check_one ("foo\nbar", "'foo\nbar'"); + check_one ("foo\rbar", "'foo\rbar'"); check_one ("foo bar", "'foo bar'"); /* '!' at the beginning of argv[0] would introduce a negated command. */ @@ -154,7 +156,7 @@ main (void) check_one ("foo'bar\"baz", "'foo'\\''bar\"baz'"); /* or "\"foo'bar\\\"baz\"" */ /* All other characters don't need quoting. */ - for (c = 1; c < UCHAR_MAX; c++) + for (c = 1; c <= UCHAR_MAX; c++) if (strchr ("\t\n\r !\"#$&'()*;<=>?^[\\]`{|}~", c) == NULL) { char s[5]; -- 2.11.0