Mercurial > vim
view src/proto/indent.pro @ 33096:828bcb1a37e7 v9.0.1833
patch 9.0.1833: [security] runtime file fixes
Commit: https://github.com/vim/vim/commit/816fbcc262687b81fc46f82f7bbeb1453addfe0c
Author: Christian Brabandt <cb@256bit.org>
Date: Thu Aug 31 23:52:30 2023 +0200
patch 9.0.1833: [security] runtime file fixes
Problem: runtime files may execute code in current dir
Solution: only execute, if not run from current directory
The perl, zig and ruby filetype plugins and the zip and gzip autoload
plugins may try to load malicious executable files from the current
working directory. This is especially a problem on windows, where the
current directory is implicitly in your $PATH and windows may even run a
file with the extension `.bat` because of $PATHEXT.
So make sure that we are not trying to execute a file from the current
directory. If this would be the case, error out (for the zip and gzip)
plugins or silently do not run those commands (for the ftplugins).
This assumes, that only the current working directory is bad. For all
other directories, it is assumed that those directories were
intentionally set to the $PATH by the user.
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 01 Sep 2023 00:00:02 +0200 |
parents | 40df8a6515f6 |
children | cb3d20e3dcd9 |
line wrap: on
line source
/* indent.c */ int tabstop_set(char_u *var, int **array); int tabstop_padding(colnr_T col, int ts_arg, int *vts); int tabstop_at(colnr_T col, int ts, int *vts); colnr_T tabstop_start(colnr_T col, int ts, int *vts); void tabstop_fromto(colnr_T start_col, colnr_T end_col, int ts_arg, int *vts, int *ntabs, int *nspcs); int *tabstop_copy(int *oldts); int tabstop_count(int *ts); int tabstop_first(int *ts); long get_sw_value(buf_T *buf); long get_sw_value_indent(buf_T *buf); long get_sw_value_col(buf_T *buf, colnr_T col); long get_sts_value(void); int get_indent(void); int get_indent_lnum(linenr_T lnum); int get_indent_buf(buf_T *buf, linenr_T lnum); int get_indent_str(char_u *ptr, int ts, int list); int get_indent_str_vtab(char_u *ptr, int ts, int *vts, int list); int set_indent(int size, int flags); int get_number_indent(linenr_T lnum); int briopt_check(win_T *wp); int get_breakindent_win(win_T *wp, char_u *line); int inindent(int extra); void op_reindent(oparg_T *oap, int (*how)(void)); int preprocs_left(void); int may_do_si(void); void ins_try_si(int c); void change_indent(int type, int amount, int round, int replaced, int call_changed_bytes); int copy_indent(int size, char_u *src); void ex_retab(exarg_T *eap); int get_expr_indent(void); int get_lisp_indent(void); void fixthisline(int (*get_the_indent)(void)); int use_indentexpr_for_lisp(void); void fix_indent(void); void f_indent(typval_T *argvars, typval_T *rettv); void f_lispindent(typval_T *argvars, typval_T *rettv); /* vim: set ft=c : */