svn commit: trunk/busybox/editors
vda at busybox.net
vda at busybox.net
Mon Dec 18 16:29:24 PST 2006
Author: vda
Date: 2006-12-18 16:29:22 -0800 (Mon, 18 Dec 2006)
New Revision: 17001
Log:
Add option to disable command execution from vi & awk
Modified:
trunk/busybox/editors/Config.in
trunk/busybox/editors/awk.c
trunk/busybox/editors/vi.c
Changeset:
Modified: trunk/busybox/editors/Config.in
===================================================================
--- trunk/busybox/editors/Config.in 2006-12-19 00:20:20 UTC (rev 17000)
+++ trunk/busybox/editors/Config.in 2006-12-19 00:29:22 UTC (rev 17001)
@@ -127,5 +127,12 @@
This will make the cursor movement faster, but requires more memory
and it makes the applet a tiny bit larger.
+config FEATURE_ALLOW_EXEC
+ bool "Allow vi and awk to execute shell commands"
+ default y
+ depends on VI || AWK
+ help
+ Enables vi and awk features which allows user to execute
+ shell commands (using system() C call).
+
endmenu
-
Modified: trunk/busybox/editors/awk.c
===================================================================
--- trunk/busybox/editors/awk.c 2006-12-19 00:20:20 UTC (rev 17000)
+++ trunk/busybox/editors/awk.c 2006-12-19 00:29:22 UTC (rev 17001)
@@ -2378,7 +2378,8 @@
case F_sy:
fflush(NULL);
- R.d = (L.s && *L.s) ? (system(L.s) >> 8) : 0;
+ R.d = (ENABLE_FEATURE_ALLOW_EXEC && L.s && *L.s)
+ ? (system(L.s) >> 8) : 0;
break;
case F_ff:
Modified: trunk/busybox/editors/vi.c
===================================================================
--- trunk/busybox/editors/vi.c 2006-12-19 00:20:20 UTC (rev 17000)
+++ trunk/busybox/editors/vi.c 2006-12-19 00:29:22 UTC (rev 17001)
@@ -660,7 +660,9 @@
dot = find_line(b); // what line is #b
dot_skip_over_ws();
}
- } else if (strncmp((char *) cmd, "!", 1) == 0) { // run a cmd
+ }
+#if ENABLE_FEATURE_ALLOW_EXEC
+ else if (strncmp((char *) cmd, "!", 1) == 0) { // run a cmd
// :!ls run the <cmd>
(void) alarm(0); // wait for input- no alarms
place_cursor(rows - 1, 0, FALSE); // go to Status line
@@ -670,7 +672,9 @@
rawmode();
Hit_Return(); // let user see results
(void) alarm(3); // done waiting for input
- } else if (strncmp((char *) cmd, "=", i) == 0) { // where is the address
+ }
+#endif
+ else if (strncmp((char *) cmd, "=", i) == 0) { // where is the address
if (b < 0) { // no addr given- use defaults
b = e = count_lines(text, dot);
}
More information about the busybox-cvs
mailing list