diff options
author | Pádraig Brady <P@draigBrady.com> | 2015-11-04 02:44:41 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2015-11-04 23:30:15 +0000 |
commit | d820706d44f25de3f58ad41a7032997089d15385 (patch) | |
tree | a24ee009865dde67f48024fa05c521a903986c4e | |
parent | c3763e5219979a714d380304b4847c9b1671241a (diff) | |
download | coreutils-d820706d44f25de3f58ad41a7032997089d15385.tar.xz |
maint: add a syntax check to avoid unstyled quoting
* src/paste.c (main): Use our styled wrapper for quotearg_colon().
* cfg.mk (sc_prohibit-quotearg): A new syntax check to avoid
future uses of unstyled quotearg to one of the internal slots,
and thus destined for diagnostic output.
-rw-r--r-- | cfg.mk | 11 | ||||
-rw-r--r-- | src/paste.c | 3 |
2 files changed, 12 insertions, 2 deletions
@@ -218,6 +218,17 @@ sc_error_shell_always_quotes: exit 1; } \ || : +# Avoid unstyled quoting to internal slots and thus destined for diagnostics +# as that can leak unescaped control characters to the output, when using +# the default "literal" quoting style. +# Instead use quotef(), or quoteaf() or in edge cases quotearg_n_style_colon(). +# A more general PCRE would be @prohibit='quotearg_.*(?!(style|buffer))' +sc_prohibit-quotearg: + @prohibit='quotearg(_n)?(|_colon|_char|_mem) ' \ + in_vc_files='\.c$$' \ + halt='Unstyled diagnostic quoting detected' \ + $(_sc_search_regexp) + sc_sun_os_names: @grep -nEi \ 'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \ diff --git a/src/paste.c b/src/paste.c index 761ae8d94..7021a9628 100644 --- a/src/paste.c +++ b/src/paste.c @@ -502,10 +502,9 @@ main (int argc, char **argv) { /* Don't use the quote() quoting style, because that would double the number of displayed backslashes, making the diagnostic look bogus. */ - set_quoting_style (NULL, c_maybe_quoting_style); error (EXIT_FAILURE, 0, _("delimiter list ends with an unescaped backslash: %s"), - quotearg_colon (delim_arg)); + quotearg_n_style_colon (0, c_maybe_quoting_style, delim_arg)); } if (!serial_merge) |