about summary refs log tree commit diff
path: root/Src/builtin.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2012-02-05 19:28:16 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2012-02-05 19:28:16 +0000
commit4735ee67af6c121929ba8f0f604d3dcfb78dd089 (patch)
tree4e1547094b5caf2e7416778bb6f493a527ce86d4 /Src/builtin.c
parent368d303a20726a3027b887eef64b3f9920c450a2 (diff)
downloadzsh-4735ee67af6c121929ba8f0f604d3dcfb78dd089.tar.gz
zsh-4735ee67af6c121929ba8f0f604d3dcfb78dd089.tar.xz
zsh-4735ee67af6c121929ba8f0f604d3dcfb78dd089.zip
30127: forbid fc from executing history lines in reverse
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index 71fc04ce1..b43c08235 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -1652,6 +1652,12 @@ fclist(FILE *f, Options ops, zlong first, zlong last,
 	last = first;
 	first = tmp;
     }
+    if (first > last) {
+	zwarnnam("fc", "history events are in wrong order, aborted");
+	if (f != stdout)
+	    fclose(f);
+	return 1;
+    }
     /* suppress "no substitution" warning if no substitution is requested */
     if (!subs)
 	fclistdone = 1;