aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2016-06-12 02:16:46 -0700
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2016-06-12 02:16:46 -0700
commit3a7719015d1c33f326b613449957a54855c939de (patch)
tree49e72309db8c1144b449e647523e31e58b020bb0 /src
parent0ee03cbf988ae214be8061854a34d7212e2d2fab (diff)
Don't allow specifying an fd with a caret redirection
For example, an argument 12345^ is a real argument, not a redirection There's no reason to use ^ here instead of >, and it's annoying to git users. Fixes #1873
Diffstat (limited to 'src')
-rw-r--r--src/tokenizer.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp
index 7357fd35..8e0bc590 100644
--- a/src/tokenizer.cpp
+++ b/src/tokenizer.cpp
@@ -383,10 +383,11 @@ static size_t read_redirection_or_fd_pipe(const wchar_t *buff,
}
}
}
-
+
// Either way we should have ended on the redirection character itself like '>'.
+ // Don't allow an fd with a caret redirection - see #1873
wchar_t redirect_char = buff[idx++]; // note increment of idx
- if (redirect_char == L'>' || redirect_char == L'^') {
+ if (redirect_char == L'>' || (redirect_char == L'^' && idx == 1)) {
redirection_mode = TOK_REDIRECT_OUT;
if (buff[idx] == redirect_char) {
// Doubled up like ^^ or >>. That means append.