diff options
author | Jim Meyering <meyering@redhat.com> | 2011-02-17 09:59:56 +0100 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2011-02-17 10:00:57 +0100 |
commit | e0f707523cab26f74ec23f4a20a27add8702ed5b (patch) | |
tree | fd621c6f3b11270d9bd670f4b129534909b5c456 /src | |
parent | f663762bf0aa5089fee41d62a4e7528f436164d4 (diff) | |
download | patch-e0f707523cab26f74ec23f4a20a27add8702ed5b.tar.gz |
don't warn twice about the same invalid file name
* src/pch.c (name_is_valid): Don't warn about the same name twice.
* tests/bad-filenames (emit_patch): Exercise the new code.
Diffstat (limited to 'src')
-rw-r--r-- | src/pch.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -379,11 +379,18 @@ skip_hex_digits (char const *str) static bool name_is_valid (char const *name) { - const char *n = name; + static char const *bad[2]; + char const *n; + + if (bad[0] && ! strcmp (bad[0], name)) + return false; + if (bad[1] && ! strcmp (bad[1], name)) + return false; if (IS_ABSOLUTE_FILE_NAME (name)) { say ("Ignoring potentially dangerous file name %s\n", quotearg (name)); + bad[!! bad[0]] = name; return false; } for (n = name; *n; ) @@ -391,6 +398,7 @@ name_is_valid (char const *name) if (*n == '.' && *++n == '.' && ( ! *++n || ISSLASH (*n))) { say ("Ignoring potentially dangerous file name %s\n", quotearg (name)); + bad[!! bad[0]] = name; return false; } while (*n && ! ISSLASH (*n)) |