From 4f6ff00bd402a74d794214f3c58c19b98eafa756 Mon Sep 17 00:00:00 2001 From: Steven Schubiger Date: Sat, 16 Nov 2013 23:19:06 +0100 Subject: Validate color provided to exclude-random switch --- colorize.c | 18 +++++++++++++----- test.pl | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/colorize.c b/colorize.c index 319c799..4303eb7 100644 --- a/colorize.c +++ b/colorize.c @@ -262,13 +262,21 @@ main (int argc, char **argv) clean_all = true; break; case OPT_EXCLUDE_RANDOM: { - char *p; + bool valid = false; + unsigned int i; exclude = xstrdup (optarg); STACK_VAR (exclude); - for (p = exclude; *p; p++) - *p = tolower (*p); - if (streq (exclude, "random")) - vfprintf_fail (formats[FMT_GENERIC], "--exclude-random switch must be provided a color"); + for (i = 1; i < tables[FOREGROUND].count - 1; i++) /* skip color none and default */ + { + const struct color *entry = &tables[FOREGROUND].entries[i]; + if (streq (exclude, entry->name)) + { + valid = true; + break; + } + } + if (!valid) + vfprintf_fail (formats[FMT_GENERIC], "--exclude-random switch must be provided a plain color"); break; } case OPT_HELP: diff --git a/test.pl b/test.pl index 7968097..49a0cf3 100755 --- a/test.pl +++ b/test.pl @@ -61,7 +61,7 @@ SKIP: { my $file = $write_to_tmpfile->('abc'); - $ok &= $run_program_fail->($program, '--exclude-random=random', 'must be provided a color'); + $ok &= $run_program_fail->($program, '--exclude-random=random', 'must be provided a plain color'); $ok &= $run_program_fail->($program, '--clean --clean-all', 'mutually exclusive'); $ok &= $run_program_fail->($program, '--clean file1 file2', 'more than one file'); $ok &= $run_program_fail->($program, '--clean-all file1 file2', 'more than one file'); -- cgit v1.2.3