]> git.pld-linux.org Git - packages/vim.git/blob - 5.7.024
one glob more (fix missing menu.vim problem)
[packages/vim.git] / 5.7.024
1 To: vim-dev@vim.org
2 Subject: Patch 5.7.024
3 Fcc: outbox
4 From: Bram Moolenaar <Bram@moolenaar.net>
5 ------------
6
7 Patch 5.7.024
8 Problem:    Evaluating an expression for 'statusline' can have side effects.
9 Solution:   Evaluate the expression in a sandbox.
10 Files:      src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c,
11             src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c,
12             src/screen.c, src/undo.c
13
14
15 *** ../vim-5.7.23/src/edit.c    Sat Jun 17 21:32:18 2000
16 --- src/edit.c  Mon Jan 29 20:32:55 2001
17 ***************
18 *** 222,227 ****
19 --- 222,236 ----
20        * error message */
21       check_for_delay(TRUE);
22   
23 + #ifdef HAVE_SANDBOX
24 +     /* Don't allow inserting in the sandbox. */
25 +     if (sandbox != 0)
26 +     {
27 +       EMSG(e_sandbox);
28 +       return FALSE;
29 +     }
30 + #endif
31
32   #ifdef INSERT_EXPAND
33       ins_compl_clear();            /* clear stuff for ctrl-x mode */
34   #endif
35 *** ../vim-5.7.23/src/eval.c    Thu Nov 16 17:06:52 2000
36 --- src/eval.c  Mon Jan 29 20:10:22 2001
37 ***************
38 *** 320,325 ****
39 --- 324,350 ----
40   
41       return retval;
42   }
43
44 + # if defined(STATUSLINE) || defined(PROTO)
45 + /*
46 +  * Call eval_to_string() with "sandbox" set and not using local variables.
47 +  */
48 +     char_u *
49 + eval_to_string_safe(arg, nextcmd)
50 +     char_u    *arg;
51 +     char_u    **nextcmd;
52 + {
53 +     char_u    *retval;
54 +     void      *save_funccalp;
55
56 +     save_funccalp = save_funccal();
57 +     ++sandbox;
58 +     retval = eval_to_string(arg, nextcmd);
59 +     --sandbox;
60 +     restore_funccal(save_funccalp);
61 +     return retval;
62 + }
63 + # endif
64   
65   /*
66    * ":let var = expr"  assignment command.
67 *** ../vim-5.7.23/src/proto/eval.pro    Sat Jun 24 11:18:33 2000
68 --- src/proto/eval.pro  Mon Jan 29 20:31:34 2001
69 ***************
70 *** 2,7 ****
71 --- 2,8 ----
72   void set_internal_string_var __ARGS((char_u *name, char_u *value));
73   int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
74   char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd));
75 + char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd));
76   void do_let __ARGS((EXARG *eap));
77   void set_context_for_expression __ARGS((char_u *arg, CMDIDX cmdidx));
78   void do_call __ARGS((EXARG *eap));
79 *** ../vim-5.7.23/src/ex_cmds.c Tue Nov 28 22:53:54 2000
80 --- src/ex_cmds.c       Mon Jan 29 20:32:11 2001
81 ***************
82 *** 2961,2966 ****
83 --- 2961,2977 ----
84         emsg(e_curdir);
85         return TRUE;
86       }
87 + #ifdef HAVE_SANDBOX
88 +     /*
89 +      * In the sandbox more things are not allowed, including the things
90 +      * disallowed in secure mode.
91 +      */
92 +     if (sandbox != 0)
93 +     {
94 +       EMSG(e_sandbox);
95 +       return TRUE;
96 +     }
97 + #endif
98       return FALSE;
99   }
100   
101 *** ../vim-5.7.23/src/ex_cmds.h Mon Jun 14 18:24:51 1999
102 --- src/ex_cmds.h       Mon Jan 29 20:27:12 2001
103 ***************
104 *** 54,59 ****
105 --- 54,60 ----
106   #define NOTADR         0x4000         /* number before command is not an address */
107   #define EDITCMD        0x8000         /* has "+command" argument */
108   #define BUFNAME 0x10000               /* accepts buffer name */
109 + #define SBOXOK        0x40000         /* allowed in the sandbox */
110   #define FILES (XFILE | EXTRA) /* multiple extra files allowed */
111   #define WORD1 (EXTRA | NOSPC) /* one extra word allowed */
112   #define FILE1 (FILES | NOSPC) /* 1 file allowed, defaults to current file */
113 ***************
114 *** 101,107 ****
115       EXCMD(CMD_bnext,  "bnext",        BANG|RANGE|NOTADR|COUNT|TRLBAR),
116       EXCMD(CMD_bprevious,"bprevious",  BANG|RANGE|NOTADR|COUNT|TRLBAR),
117       EXCMD(CMD_brewind,        "brewind",      BANG|RANGE|TRLBAR),
118 !     EXCMD(CMD_break,  "break",        TRLBAR),
119       EXCMD(CMD_browse, "browse",       NEEDARG|EXTRA|NOTRLCOM),
120       EXCMD(CMD_buffers,        "buffers",      TRLBAR),
121       EXCMD(CMD_bunload,        "bunload",      BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
122 --- 102,108 ----
123       EXCMD(CMD_bnext,  "bnext",        BANG|RANGE|NOTADR|COUNT|TRLBAR),
124       EXCMD(CMD_bprevious,"bprevious",  BANG|RANGE|NOTADR|COUNT|TRLBAR),
125       EXCMD(CMD_brewind,        "brewind",      BANG|RANGE|TRLBAR),
126 !     EXCMD(CMD_break,  "break",        TRLBAR|SBOXOK),
127       EXCMD(CMD_browse, "browse",       NEEDARG|EXTRA|NOTRLCOM),
128       EXCMD(CMD_buffers,        "buffers",      TRLBAR),
129       EXCMD(CMD_bunload,        "bunload",      BANG|RANGE|NOTADR|BUFNAME|COUNT|EXTRA|TRLBAR),
130 ***************
131 *** 109,115 ****
132       EXCMD(CMD_cNext,  "cNext",        RANGE|NOTADR|COUNT|TRLBAR|BANG),
133       EXCMD(CMD_cabbrev,        "cabbrev",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
134       EXCMD(CMD_cabclear, "cabclear",   TRLBAR),
135 !     EXCMD(CMD_call,   "call",         RANGE|NEEDARG|EXTRA|NOTRLCOM),
136       EXCMD(CMD_cc,     "cc",           RANGE|NOTADR|COUNT|TRLBAR|BANG),
137       EXCMD(CMD_cd,     "cd",           NAMEDF|TRLBAR),
138       EXCMD(CMD_center, "center",       TRLBAR|RANGE|EXTRA),
139 --- 110,116 ----
140       EXCMD(CMD_cNext,  "cNext",        RANGE|NOTADR|COUNT|TRLBAR|BANG),
141       EXCMD(CMD_cabbrev,        "cabbrev",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
142       EXCMD(CMD_cabclear, "cabclear",   TRLBAR),
143 !     EXCMD(CMD_call,   "call",         RANGE|NEEDARG|EXTRA|NOTRLCOM|SBOXOK),
144       EXCMD(CMD_cc,     "cc",           RANGE|NOTADR|COUNT|TRLBAR|BANG),
145       EXCMD(CMD_cd,     "cd",           NAMEDF|TRLBAR),
146       EXCMD(CMD_center, "center",       TRLBAR|RANGE|EXTRA),
147 ***************
148 *** 132,138 ****
149       EXCMD(CMD_colder, "colder",       RANGE|NOTADR|COUNT|TRLBAR),
150       EXCMD(CMD_command,        "command",      EXTRA|BANG|NOTRLCOM|USECTRLV),
151       EXCMD(CMD_comclear,       "comclear",     TRLBAR),
152 !     EXCMD(CMD_continue, "continue",   TRLBAR),
153       EXCMD(CMD_confirm,  "confirm",    NEEDARG|EXTRA|NOTRLCOM),
154       EXCMD(CMD_cprevious,"cprevious",  RANGE|NOTADR|COUNT|TRLBAR|BANG),
155       EXCMD(CMD_cquit,  "cquit",        TRLBAR|BANG),
156 --- 133,139 ----
157       EXCMD(CMD_colder, "colder",       RANGE|NOTADR|COUNT|TRLBAR),
158       EXCMD(CMD_command,        "command",      EXTRA|BANG|NOTRLCOM|USECTRLV),
159       EXCMD(CMD_comclear,       "comclear",     TRLBAR),
160 !     EXCMD(CMD_continue, "continue",   TRLBAR|SBOXOK),
161       EXCMD(CMD_confirm,  "confirm",    NEEDARG|EXTRA|NOTRLCOM),
162       EXCMD(CMD_cprevious,"cprevious",  RANGE|NOTADR|COUNT|TRLBAR|BANG),
163       EXCMD(CMD_cquit,  "cquit",        TRLBAR|BANG),
164 ***************
165 *** 154,170 ****
166       EXCMD(CMD_dsearch,        "dsearch",      BANG|RANGE|DFLALL|EXTRA),
167       EXCMD(CMD_dsplit, "dsplit",       BANG|RANGE|DFLALL|EXTRA),
168       EXCMD(CMD_edit,   "edit",         BANG|FILE1|EDITCMD|TRLBAR),
169 !     EXCMD(CMD_echo,   "echo",         EXTRA|NOTRLCOM),
170 !     EXCMD(CMD_echohl, "echohl",       EXTRA|TRLBAR),
171 !     EXCMD(CMD_echon,  "echon",        EXTRA|NOTRLCOM),
172 !     EXCMD(CMD_else,   "else",         TRLBAR),
173 !     EXCMD(CMD_elseif, "elseif",       EXTRA|NOTRLCOM),
174       EXCMD(CMD_exemenu,        "emenu",        NEEDARG+EXTRA+TRLBAR+NOTRLCOM),
175 !     EXCMD(CMD_endif,  "endif",        TRLBAR),
176       EXCMD(CMD_endfunction,"endfunction",TRLBAR),
177 !     EXCMD(CMD_endwhile,       "endwhile",     TRLBAR),
178       EXCMD(CMD_ex,     "ex",           BANG|FILE1|EDITCMD|TRLBAR),
179 !     EXCMD(CMD_execute,        "execute",      EXTRA|NOTRLCOM),
180       EXCMD(CMD_exit,   "exit",         RANGE|BANG|FILE1|DFLALL|TRLBAR),
181       EXCMD(CMD_file,   "file",         BANG|FILE1|TRLBAR),
182       EXCMD(CMD_files,  "files",        TRLBAR),
183 --- 155,171 ----
184       EXCMD(CMD_dsearch,        "dsearch",      BANG|RANGE|DFLALL|EXTRA),
185       EXCMD(CMD_dsplit, "dsplit",       BANG|RANGE|DFLALL|EXTRA),
186       EXCMD(CMD_edit,   "edit",         BANG|FILE1|EDITCMD|TRLBAR),
187 !     EXCMD(CMD_echo,   "echo",         EXTRA|NOTRLCOM|SBOXOK),
188 !     EXCMD(CMD_echohl, "echohl",       EXTRA|TRLBAR|SBOXOK),
189 !     EXCMD(CMD_echon,  "echon",        EXTRA|NOTRLCOM|SBOXOK),
190 !     EXCMD(CMD_else,   "else",         TRLBAR|SBOXOK),
191 !     EXCMD(CMD_elseif, "elseif",       EXTRA|NOTRLCOM|SBOXOK),
192       EXCMD(CMD_exemenu,        "emenu",        NEEDARG+EXTRA+TRLBAR+NOTRLCOM),
193 !     EXCMD(CMD_endif,  "endif",        TRLBAR|SBOXOK),
194       EXCMD(CMD_endfunction,"endfunction",TRLBAR),
195 !     EXCMD(CMD_endwhile,       "endwhile",     TRLBAR|SBOXOK),
196       EXCMD(CMD_ex,     "ex",           BANG|FILE1|EDITCMD|TRLBAR),
197 !     EXCMD(CMD_execute,        "execute",      EXTRA|NOTRLCOM|SBOXOK),
198       EXCMD(CMD_exit,   "exit",         RANGE|BANG|FILE1|DFLALL|TRLBAR),
199       EXCMD(CMD_file,   "file",         BANG|FILE1|TRLBAR),
200       EXCMD(CMD_files,  "files",        TRLBAR),
201 ***************
202 *** 173,191 ****
203       EXCMD(CMD_fixdel, "fixdel",       TRLBAR),
204       EXCMD(CMD_function,       "function",     EXTRA|BANG),
205       EXCMD(CMD_global, "global",       RANGE|BANG|EXTRA|DFLALL),
206 !     EXCMD(CMD_goto,   "goto",         RANGE|NOTADR|COUNT|TRLBAR),
207       EXCMD(CMD_grep,   "grep",         NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
208       EXCMD(CMD_gui,    "gui",          BANG|NAMEDFS|EDITCMD|TRLBAR),
209       EXCMD(CMD_gvim,   "gvim",         BANG|NAMEDFS|EDITCMD|TRLBAR),
210       EXCMD(CMD_help,   "help",         EXTRA|NOTRLCOM),
211       EXCMD(CMD_helpfind,       "helpfind",     EXTRA|NOTRLCOM),
212 !     EXCMD(CMD_highlight,"highlight",  BANG|EXTRA|TRLBAR),
213       EXCMD(CMD_hide,   "hide",         BANG|TRLBAR),
214       EXCMD(CMD_history,        "history",      EXTRA|TRLBAR),
215       EXCMD(CMD_insert, "insert",       BANG|RANGE|TRLBAR),
216       EXCMD(CMD_iabbrev,        "iabbrev",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
217       EXCMD(CMD_iabclear, "iabclear",   TRLBAR),
218 !     EXCMD(CMD_if,     "if",           EXTRA|NOTRLCOM),
219       EXCMD(CMD_ijump,  "ijump",        BANG|RANGE|DFLALL|EXTRA),
220       EXCMD(CMD_ilist,  "ilist",        BANG|RANGE|DFLALL|EXTRA),
221       EXCMD(CMD_imap,   "imap",         EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
222 --- 174,192 ----
223       EXCMD(CMD_fixdel, "fixdel",       TRLBAR),
224       EXCMD(CMD_function,       "function",     EXTRA|BANG),
225       EXCMD(CMD_global, "global",       RANGE|BANG|EXTRA|DFLALL),
226 !     EXCMD(CMD_goto,   "goto",         RANGE|NOTADR|COUNT|TRLBAR|SBOXOK),
227       EXCMD(CMD_grep,   "grep",         NEEDARG|EXTRA|NOTRLCOM|TRLBAR|XFILE),
228       EXCMD(CMD_gui,    "gui",          BANG|NAMEDFS|EDITCMD|TRLBAR),
229       EXCMD(CMD_gvim,   "gvim",         BANG|NAMEDFS|EDITCMD|TRLBAR),
230       EXCMD(CMD_help,   "help",         EXTRA|NOTRLCOM),
231       EXCMD(CMD_helpfind,       "helpfind",     EXTRA|NOTRLCOM),
232 !     EXCMD(CMD_highlight,"highlight",  BANG|EXTRA|TRLBAR|SBOXOK),
233       EXCMD(CMD_hide,   "hide",         BANG|TRLBAR),
234       EXCMD(CMD_history,        "history",      EXTRA|TRLBAR),
235       EXCMD(CMD_insert, "insert",       BANG|RANGE|TRLBAR),
236       EXCMD(CMD_iabbrev,        "iabbrev",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
237       EXCMD(CMD_iabclear, "iabclear",   TRLBAR),
238 !     EXCMD(CMD_if,     "if",           EXTRA|NOTRLCOM|SBOXOK),
239       EXCMD(CMD_ijump,  "ijump",        BANG|RANGE|DFLALL|EXTRA),
240       EXCMD(CMD_ilist,  "ilist",        BANG|RANGE|DFLALL|EXTRA),
241       EXCMD(CMD_imap,   "imap",         EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
242 ***************
243 *** 202,215 ****
244       EXCMD(CMD_iunmenu,        "iunmenu",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
245       EXCMD(CMD_join,   "join",         BANG|RANGE|COUNT|TRLBAR),
246       EXCMD(CMD_jumps,  "jumps",        TRLBAR),
247 !     EXCMD(CMD_k,      "k",            RANGE|WORD1|TRLBAR),
248       EXCMD(CMD_list,   "list",         RANGE|COUNT|TRLBAR),
249       EXCMD(CMD_last,   "last",         EXTRA|BANG|EDITCMD|TRLBAR),
250       EXCMD(CMD_left,   "left",         TRLBAR|RANGE|EXTRA),
251 !     EXCMD(CMD_let,    "let",          EXTRA|NOTRLCOM),
252       EXCMD(CMD_ls,     "ls",           TRLBAR),
253       EXCMD(CMD_move,   "move",         RANGE|EXTRA|TRLBAR),
254 !     EXCMD(CMD_mark,   "mark",         RANGE|WORD1|TRLBAR),
255       EXCMD(CMD_make,   "make",         EXTRA|NOTRLCOM|TRLBAR|XFILE),
256       EXCMD(CMD_map,    "map",          BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
257       EXCMD(CMD_mapclear,       "mapclear",     BANG|TRLBAR),
258 --- 203,216 ----
259       EXCMD(CMD_iunmenu,        "iunmenu",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
260       EXCMD(CMD_join,   "join",         BANG|RANGE|COUNT|TRLBAR),
261       EXCMD(CMD_jumps,  "jumps",        TRLBAR),
262 !     EXCMD(CMD_k,      "k",            RANGE|WORD1|TRLBAR|SBOXOK),
263       EXCMD(CMD_list,   "list",         RANGE|COUNT|TRLBAR),
264       EXCMD(CMD_last,   "last",         EXTRA|BANG|EDITCMD|TRLBAR),
265       EXCMD(CMD_left,   "left",         TRLBAR|RANGE|EXTRA),
266 !     EXCMD(CMD_let,    "let",          EXTRA|NOTRLCOM|SBOXOK),
267       EXCMD(CMD_ls,     "ls",           TRLBAR),
268       EXCMD(CMD_move,   "move",         RANGE|EXTRA|TRLBAR),
269 !     EXCMD(CMD_mark,   "mark",         RANGE|WORD1|TRLBAR|SBOXOK),
270       EXCMD(CMD_make,   "make",         EXTRA|NOTRLCOM|TRLBAR|XFILE),
271       EXCMD(CMD_map,    "map",          BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
272       EXCMD(CMD_mapclear,       "mapclear",     BANG|TRLBAR),
273 ***************
274 *** 229,238 ****
275       EXCMD(CMD_nnoremap, "nnoremap",   EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
276       EXCMD(CMD_nnoremenu,"nnoremenu",  RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
277       EXCMD(CMD_noremap,        "noremap",      BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
278 !     EXCMD(CMD_nohlsearch,"nohlsearch",        TRLBAR),
279       EXCMD(CMD_noreabbrev,"noreabbrev",        EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
280       EXCMD(CMD_noremenu, "noremenu",   RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
281 !     EXCMD(CMD_normal, "normal",       RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV),
282       EXCMD(CMD_number, "number",       RANGE|COUNT|TRLBAR),
283       EXCMD(CMD_nunmap, "nunmap",       EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
284       EXCMD(CMD_nunmenu,        "nunmenu",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
285 --- 230,239 ----
286       EXCMD(CMD_nnoremap, "nnoremap",   EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
287       EXCMD(CMD_nnoremenu,"nnoremenu",  RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
288       EXCMD(CMD_noremap,        "noremap",      BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
289 !     EXCMD(CMD_nohlsearch,"nohlsearch",        TRLBAR|SBOXOK),
290       EXCMD(CMD_noreabbrev,"noreabbrev",        EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
291       EXCMD(CMD_noremenu, "noremenu",   RANGE|NOTADR|ZEROR|BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
292 !     EXCMD(CMD_normal, "normal",       RANGE|BANG|EXTRA|NEEDARG|NOTRLCOM|USECTRLV|SBOXOK),
293       EXCMD(CMD_number, "number",       RANGE|COUNT|TRLBAR),
294       EXCMD(CMD_nunmap, "nunmap",       EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
295       EXCMD(CMD_nunmenu,        "nunmenu",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
296 ***************
297 *** 248,255 ****
298       EXCMD(CMD_ounmenu,        "ounmenu",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
299       EXCMD(CMD_print,  "print",        RANGE|COUNT|TRLBAR),
300       EXCMD(CMD_pclose, "pclose",       BANG|TRLBAR),
301 !     EXCMD(CMD_perl,   "perl",         RANGE|EXTRA|DFLALL|NEEDARG),
302 !     EXCMD(CMD_perldo, "perldo",       RANGE|EXTRA|DFLALL|NEEDARG),
303       EXCMD(CMD_pop,    "pop",          RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
304       EXCMD(CMD_ppop,   "ppop",         RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
305       EXCMD(CMD_preserve, "preserve",   TRLBAR),
306 --- 249,256 ----
307       EXCMD(CMD_ounmenu,        "ounmenu",      EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
308       EXCMD(CMD_print,  "print",        RANGE|COUNT|TRLBAR),
309       EXCMD(CMD_pclose, "pclose",       BANG|TRLBAR),
310 !     EXCMD(CMD_perl,   "perl",         RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK),
311 !     EXCMD(CMD_perldo, "perldo",       RANGE|EXTRA|DFLALL|NEEDARG|SBOXOK),
312       EXCMD(CMD_pop,    "pop",          RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
313       EXCMD(CMD_ppop,   "ppop",         RANGE|NOTADR|BANG|COUNT|TRLBAR|ZEROR),
314       EXCMD(CMD_preserve, "preserve",   TRLBAR),
315 ***************
316 *** 266,273 ****
317       EXCMD(CMD_ptselect,       "ptselect",     BANG|TRLBAR|WORD1),
318       EXCMD(CMD_put,    "put",          RANGE|BANG|REGSTR|TRLBAR|ZEROR),
319       EXCMD(CMD_pwd,    "pwd",          TRLBAR),
320 !     EXCMD(CMD_python, "python",       RANGE|EXTRA|NEEDARG),
321 !     EXCMD(CMD_pyfile, "pyfile",       RANGE|FILE1|NEEDARG),
322       EXCMD(CMD_quit,   "quit",         BANG|TRLBAR),
323       EXCMD(CMD_qall,   "qall",         BANG|TRLBAR),
324       EXCMD(CMD_read,   "read",         BANG|RANGE|NAMEDF|TRLBAR|ZEROR),
325 --- 267,274 ----
326       EXCMD(CMD_ptselect,       "ptselect",     BANG|TRLBAR|WORD1),
327       EXCMD(CMD_put,    "put",          RANGE|BANG|REGSTR|TRLBAR|ZEROR),
328       EXCMD(CMD_pwd,    "pwd",          TRLBAR),
329 !     EXCMD(CMD_python, "python",       RANGE|EXTRA|NEEDARG|SBOXOK),
330 !     EXCMD(CMD_pyfile, "pyfile",       RANGE|FILE1|NEEDARG|SBOXOK),
331       EXCMD(CMD_quit,   "quit",         BANG|TRLBAR),
332       EXCMD(CMD_qall,   "qall",         BANG|TRLBAR),
333       EXCMD(CMD_read,   "read",         BANG|RANGE|NAMEDF|TRLBAR|ZEROR),
334 ***************
335 *** 277,283 ****
336       EXCMD(CMD_registers,"registers",  EXTRA|NOTRLCOM|TRLBAR),
337       EXCMD(CMD_resize, "resize",       TRLBAR|WORD1),
338       EXCMD(CMD_retab,  "retab",        TRLBAR|RANGE|DFLALL|BANG|WORD1),
339 !     EXCMD(CMD_return, "return",       EXTRA|NOTRLCOM),
340       EXCMD(CMD_rewind, "rewind",       EXTRA|BANG|EDITCMD|TRLBAR),
341       EXCMD(CMD_right,  "right",        TRLBAR|RANGE|EXTRA),
342       EXCMD(CMD_rviminfo, "rviminfo",   BANG|FILE1|TRLBAR),
343 --- 278,284 ----
344       EXCMD(CMD_registers,"registers",  EXTRA|NOTRLCOM|TRLBAR),
345       EXCMD(CMD_resize, "resize",       TRLBAR|WORD1),
346       EXCMD(CMD_retab,  "retab",        TRLBAR|RANGE|DFLALL|BANG|WORD1),
347 !     EXCMD(CMD_return, "return",       EXTRA|NOTRLCOM|SBOXOK),
348       EXCMD(CMD_rewind, "rewind",       EXTRA|BANG|EDITCMD|TRLBAR),
349       EXCMD(CMD_right,  "right",        TRLBAR|RANGE|EXTRA),
350       EXCMD(CMD_rviminfo, "rviminfo",   BANG|FILE1|TRLBAR),
351 ***************
352 *** 305,311 ****
353       EXCMD(CMD_snext,  "snext",        RANGE|NOTADR|BANG|NAMEDFS|EDITCMD|TRLBAR),
354       EXCMD(CMD_sniff,  "sniff",        EXTRA|TRLBAR),
355       EXCMD(CMD_snomagic,       "snomagic",     RANGE|EXTRA),
356 !     EXCMD(CMD_source, "source",       BANG|NAMEDF|TRLBAR),
357       EXCMD(CMD_split,  "split",        BANG|FILE1|RANGE|NOTADR|EDITCMD|TRLBAR),
358       EXCMD(CMD_sprevious,"sprevious",  EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|TRLBAR),
359       EXCMD(CMD_srewind,        "srewind",      EXTRA|BANG|EDITCMD|TRLBAR),
360 --- 306,312 ----
361       EXCMD(CMD_snext,  "snext",        RANGE|NOTADR|BANG|NAMEDFS|EDITCMD|TRLBAR),
362       EXCMD(CMD_sniff,  "sniff",        EXTRA|TRLBAR),
363       EXCMD(CMD_snomagic,       "snomagic",     RANGE|EXTRA),
364 !     EXCMD(CMD_source, "source",       BANG|NAMEDF|TRLBAR|SBOXOK),
365       EXCMD(CMD_split,  "split",        BANG|FILE1|RANGE|NOTADR|EDITCMD|TRLBAR),
366       EXCMD(CMD_sprevious,"sprevious",  EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|TRLBAR),
367       EXCMD(CMD_srewind,        "srewind",      EXTRA|BANG|EDITCMD|TRLBAR),
368 ***************
369 *** 324,332 ****
370       EXCMD(CMD_tNext,  "tNext",        RANGE|NOTADR|BANG|TRLBAR|ZEROR),
371       EXCMD(CMD_tag,    "tag",          RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
372       EXCMD(CMD_tags,   "tags",         TRLBAR),
373 !     EXCMD(CMD_tcl,    "tcl",          RANGE|EXTRA|NEEDARG),
374 !     EXCMD(CMD_tcldo,  "tcldo",        RANGE|DFLALL|EXTRA|NEEDARG),
375 !     EXCMD(CMD_tclfile,        "tclfile",      RANGE|FILE1|NEEDARG),
376       EXCMD(CMD_tearoff,        "tearoff",      NEEDARG|EXTRA|TRLBAR|NOTRLCOM),
377       EXCMD(CMD_tjump,  "tjump",        BANG|TRLBAR|WORD1),
378       EXCMD(CMD_tlast,  "tlast",        BANG|TRLBAR),
379 --- 325,333 ----
380       EXCMD(CMD_tNext,  "tNext",        RANGE|NOTADR|BANG|TRLBAR|ZEROR),
381       EXCMD(CMD_tag,    "tag",          RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
382       EXCMD(CMD_tags,   "tags",         TRLBAR),
383 !     EXCMD(CMD_tcl,    "tcl",          RANGE|EXTRA|NEEDARG|SBOXOK),
384 !     EXCMD(CMD_tcldo,  "tcldo",        RANGE|DFLALL|EXTRA|NEEDARG|SBOXOK),
385 !     EXCMD(CMD_tclfile,        "tclfile",      RANGE|FILE1|NEEDARG|SBOXOK),
386       EXCMD(CMD_tearoff,        "tearoff",      NEEDARG|EXTRA|TRLBAR|NOTRLCOM),
387       EXCMD(CMD_tjump,  "tjump",        BANG|TRLBAR|WORD1),
388       EXCMD(CMD_tlast,  "tlast",        BANG|TRLBAR),
389 ***************
390 *** 339,345 ****
391       EXCMD(CMD_undo,   "undo",         TRLBAR),
392       EXCMD(CMD_unabbreviate,"unabbreviate",EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
393       EXCMD(CMD_unhide, "unhide",       RANGE|NOTADR|COUNT|TRLBAR),
394 !     EXCMD(CMD_unlet,  "unlet",        BANG|EXTRA|NEEDARG|TRLBAR),
395       EXCMD(CMD_unmap,  "unmap",        BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
396       EXCMD(CMD_unmenu, "unmenu",       BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
397       EXCMD(CMD_update, "update",       RANGE|BANG|FILE1|DFLALL|TRLBAR),
398 --- 340,346 ----
399       EXCMD(CMD_undo,   "undo",         TRLBAR),
400       EXCMD(CMD_unabbreviate,"unabbreviate",EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
401       EXCMD(CMD_unhide, "unhide",       RANGE|NOTADR|COUNT|TRLBAR),
402 !     EXCMD(CMD_unlet,  "unlet",        BANG|EXTRA|NEEDARG|TRLBAR|SBOXOK),
403       EXCMD(CMD_unmap,  "unmap",        BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
404       EXCMD(CMD_unmenu, "unmenu",       BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV),
405       EXCMD(CMD_update, "update",       RANGE|BANG|FILE1|DFLALL|TRLBAR),
406 ***************
407 *** 357,363 ****
408       EXCMD(CMD_write,  "write",        RANGE|BANG|FILE1|DFLALL|TRLBAR),
409       EXCMD(CMD_wNext,  "wNext",        RANGE|NOTADR|BANG|FILE1|TRLBAR),
410       EXCMD(CMD_wall,   "wall",         BANG|TRLBAR),
411 !     EXCMD(CMD_while,  "while",        EXTRA|NOTRLCOM),
412       EXCMD(CMD_winsize,        "winsize",      EXTRA|NEEDARG|TRLBAR),
413       EXCMD(CMD_winpos, "winpos",       EXTRA|TRLBAR),
414       EXCMD(CMD_wnext,  "wnext",        RANGE|NOTADR|BANG|FILE1|TRLBAR),
415 --- 358,364 ----
416       EXCMD(CMD_write,  "write",        RANGE|BANG|FILE1|DFLALL|TRLBAR),
417       EXCMD(CMD_wNext,  "wNext",        RANGE|NOTADR|BANG|FILE1|TRLBAR),
418       EXCMD(CMD_wall,   "wall",         BANG|TRLBAR),
419 !     EXCMD(CMD_while,  "while",        EXTRA|NOTRLCOM|SBOXOK),
420       EXCMD(CMD_winsize,        "winsize",      EXTRA|NEEDARG|TRLBAR),
421       EXCMD(CMD_winpos, "winpos",       EXTRA|TRLBAR),
422       EXCMD(CMD_wnext,  "wnext",        RANGE|NOTADR|BANG|FILE1|TRLBAR),
423 *** ../vim-5.7.23/src/ex_docmd.c        Sun Oct 22 16:43:53 2000
424 --- src/ex_docmd.c      Mon Jan 29 20:32:24 2001
425 ***************
426 *** 1027,1032 ****
427 --- 1027,1041 ----
428   #endif
429         ea.argt = cmdnames[(int)ea.cmdidx].cmd_argt;
430   
431 + #ifdef HAVE_SANDBOX
432 +     if (sandbox != 0 && !(ea.argt & SBOXOK))
433 +     {
434 +       /* Command not allowed in sandbox. */
435 +       errormsg = e_sandbox;
436 +       goto doend;
437 +     }
438 + #endif
439
440       if (!(ea.argt & RANGE) && ea.addr_count)  /* no range allowed */
441       {
442         errormsg = e_norange;
443 *** ../vim-5.7.23/src/globals.h Tue Jun 20 21:28:04 2000
444 --- src/globals.h       Mon Jan 29 20:32:44 2001
445 ***************
446 *** 319,324 ****
447 --- 319,332 ----
448                                  * allowed, e.g. when sourcing .exrc or .vimrc
449                                  * in current directory */
450   
451 + #if defined(STATUSLINE) && defined(WANT_EVAL)
452 + # define HAVE_SANDBOX
453 + EXTERN int    sandbox INIT(= 0);
454 +                               /* non-zero when evaluating an expression in a
455 +                                * "sandbox".  Not allowed to change the
456 +                                * buffer. */
457 + #endif
458
459   EXTERN int    silent_mode INIT(= FALSE);
460                                 /* set to TRUE when "-s" commandline argument
461                                  * used for ex */
462 ***************
463 *** 779,784 ****
464 --- 787,795 ----
465   #endif
466   #ifdef QUICKFIX
467   EXTERN char_u e_readerrf[]    INIT(="Error while reading errorfile");
468 + #endif
469 + #ifdef HAVE_SANDBOX
470 + EXTERN char_u e_sandbox[]     INIT(="Not allowed in sandbox");
471   #endif
472   EXTERN char_u e_scroll[]      INIT(="Invalid scroll size");
473   EXTERN char_u e_tagformat[]   INIT(="Format error in tags file \"%s\"");
474 *** ../vim-5.7.23/src/option.c  Wed Jun  7 12:56:08 2000
475 --- src/option.c        Mon Jan 29 20:17:58 2001
476 ***************
477 *** 3855,3861 ****
478        * in secure mode, setting of the secure option is not
479        * allowed
480        */
481 !     if (secure && (int *)varp == &p_secure)
482         return (char_u *)"not allowed here";
483   
484   #ifdef USE_GUI
485 --- 3855,3865 ----
486        * in secure mode, setting of the secure option is not
487        * allowed
488        */
489 !     if ((secure
490 ! #ifdef HAVE_SANDBOX
491 !               || sandbox != 0
492 ! #endif
493 !               ) && (int *)varp == &p_secure)
494         return (char_u *)"not allowed here";
495   
496   #ifdef USE_GUI
497 *** ../vim-5.7.23/src/screen.c  Mon Jan  8 11:50:35 2001
498 --- src/screen.c        Mon Jan 29 19:56:10 2001
499 ***************
500 *** 2876,2882 ****
501             curwin = wp;
502             curbuf = wp->w_buffer;
503   
504 !           str = eval_to_string(p, &t);
505             if (str != NULL && *str != 0)
506             {
507                 t = str;
508 --- 2876,2882 ----
509             curwin = wp;
510             curbuf = wp->w_buffer;
511   
512 !           str = eval_to_string_safe(p, &t);
513             if (str != NULL && *str != 0)
514             {
515                 t = str;
516 *** ../vim-5.7.23/src/undo.c    Sun Oct 31 16:18:20 1999
517 --- src/undo.c  Mon Jan 29 20:34:03 2001
518 ***************
519 *** 155,160 ****
520 --- 155,172 ----
521       struct u_entry  *uep;
522       long          size;
523   
524 + #ifdef HAVE_SANDBOX
525 +     /*
526 +      * In the sandbox it's not allowed to change the text.  Letting the
527 +      * undo fail is a crude way to make all change commands fail.
528 +      */
529 +     if (sandbox != 0)
530 +     {
531 +       EMSG(e_sandbox);
532 +       return FAIL;
533 +     }
534 + #endif
535
536       /*
537        * if curbuf->b_u_synced == TRUE make a new header
538        */
539 ***************
540 *** 314,319 ****
541 --- 326,340 ----
542   u_doit(count)
543       int count;
544   {
545 + #ifdef HAVE_SANDBOX
546 +     /* In the sandbox it's not allowed to change the text. */
547 +     if (sandbox != 0)
548 +     {
549 +       EMSG(e_sandbox);
550 +       return;
551 +     }
552 + #endif
553
554       u_newcount = 0;
555       u_oldcount = 0;
556       while (count--)
557 *** ../vim-5.7.23/src/version.c Thu Jan 18 14:01:55 2001
558 --- src/version.c       Mon Jan 29 20:50:45 2001
559 ***************
560 *** 439,440 ****
561 --- 439,442 ----
562   {   /* Add new patch number below this line */
563 + /**/
564 +     24,
565   /**/
566
567 -- 
568 hundred-and-one symptoms of being an internet addict:
569 70. ISDN lines are added to your house on a hourly basis
570
571  ///  Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net  \\\
572 (((   Creator of Vim - http://www.vim.org -- ftp://ftp.vim.org/pub/vim   )))
573  \\\  Help me helping AIDS orphans in Uganda - http://iccf-holland.org  ///
This page took 0.069576 seconds and 3 git commands to generate.