comparison src/filepath.c @ 24246:35603c7991d7 v8.2.2664

patch 8.2.2664: Vim9: not enough function arguments checked for string Commit: https://github.com/vim/vim/commit/32105ae88f3aa6a6af30336f0bc9f8eb81292cd7 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 27 18:59:25 2021 +0100 patch 8.2.2664: Vim9: not enough function arguments checked for string Problem: Vim9: not enough function arguments checked for string. Solution: Check in balloon functions. Refactor function arguments.
author Bram Moolenaar <Bram@vim.org>
date Sat, 27 Mar 2021 19:00:04 +0100
parents 083f07f99e20
children 01b274c3f69b
comparison
equal deleted inserted replaced
24245:5e22bf689c9f 24246:35603c7991d7
859 * "executable()" function 859 * "executable()" function
860 */ 860 */
861 void 861 void
862 f_executable(typval_T *argvars, typval_T *rettv) 862 f_executable(typval_T *argvars, typval_T *rettv)
863 { 863 {
864 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) 864 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
865 return; 865 return;
866 866
867 // Check in $PATH and also check directly if there is a directory name. 867 // Check in $PATH and also check directly if there is a directory name.
868 rettv->vval.v_number = mch_can_exe(tv_get_string(&argvars[0]), NULL, TRUE); 868 rettv->vval.v_number = mch_can_exe(tv_get_string(&argvars[0]), NULL, TRUE);
869 } 869 }
874 void 874 void
875 f_exepath(typval_T *argvars, typval_T *rettv) 875 f_exepath(typval_T *argvars, typval_T *rettv)
876 { 876 {
877 char_u *p = NULL; 877 char_u *p = NULL;
878 878
879 if (in_vim9script() && check_for_nonempty_string(&argvars[0], 1) == FAIL) 879 if (in_vim9script() && check_for_nonempty_string_arg(argvars, 0) == FAIL)
880 return; 880 return;
881 (void)mch_can_exe(tv_get_string(&argvars[0]), &p, TRUE); 881 (void)mch_can_exe(tv_get_string(&argvars[0]), &p, TRUE);
882 rettv->v_type = VAR_STRING; 882 rettv->v_type = VAR_STRING;
883 rettv->vval.v_string = p; 883 rettv->vval.v_string = p;
884 } 884 }
891 { 891 {
892 int fd; 892 int fd;
893 char_u *p; 893 char_u *p;
894 int n; 894 int n;
895 895
896 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) 896 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
897 return; 897 return;
898 #ifndef O_NONBLOCK 898 #ifndef O_NONBLOCK
899 # define O_NONBLOCK 0 899 # define O_NONBLOCK 0
900 #endif 900 #endif
901 p = tv_get_string(&argvars[0]); 901 p = tv_get_string(&argvars[0]);
916 * rights to write into. 916 * rights to write into.
917 */ 917 */
918 void 918 void
919 f_filewritable(typval_T *argvars, typval_T *rettv) 919 f_filewritable(typval_T *argvars, typval_T *rettv)
920 { 920 {
921 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) 921 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
922 return; 922 return;
923 rettv->vval.v_number = filewritable(tv_get_string(&argvars[0])); 923 rettv->vval.v_number = filewritable(tv_get_string(&argvars[0]));
924 } 924 }
925 925
926 static void 926 static void
940 int error = FALSE; 940 int error = FALSE;
941 #endif 941 #endif
942 942
943 rettv->vval.v_string = NULL; 943 rettv->vval.v_string = NULL;
944 rettv->v_type = VAR_STRING; 944 rettv->v_type = VAR_STRING;
945 if (in_vim9script() && check_for_nonempty_string(&argvars[0], 1) == FAIL) 945 if (in_vim9script() && check_for_nonempty_string_arg(argvars, 0) == FAIL)
946 return; 946 return;
947 947
948 #ifdef FEAT_SEARCHPATH 948 #ifdef FEAT_SEARCHPATH
949 fname = tv_get_string(&argvars[0]); 949 fname = tv_get_string(&argvars[0]);
950 950
1021 int usedlen = 0; 1021 int usedlen = 0;
1022 int len = 0; 1022 int len = 0;
1023 char_u *fbuf = NULL; 1023 char_u *fbuf = NULL;
1024 char_u buf[NUMBUFLEN]; 1024 char_u buf[NUMBUFLEN];
1025 1025
1026 if (in_vim9script() && (check_for_string(&argvars[0], 1) == FAIL 1026 if (in_vim9script() && (check_for_string_arg(argvars, 0) == FAIL
1027 || check_for_string(&argvars[1], 2) == FAIL)) 1027 || check_for_string_arg(argvars, 1) == FAIL))
1028 return; 1028 return;
1029 fname = tv_get_string_chk(&argvars[0]); 1029 fname = tv_get_string_chk(&argvars[0]);
1030 mods = tv_get_string_buf_chk(&argvars[1], buf); 1030 mods = tv_get_string_buf_chk(&argvars[1], buf);
1031 if (mods == NULL || fname == NULL) 1031 if (mods == NULL || fname == NULL)
1032 fname = NULL; 1032 fname = NULL;
1133 char_u *fname; 1133 char_u *fname;
1134 stat_T st; 1134 stat_T st;
1135 char_u *perm = NULL; 1135 char_u *perm = NULL;
1136 char_u permbuf[] = "---------"; 1136 char_u permbuf[] = "---------";
1137 1137
1138 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) 1138 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
1139 return; 1139 return;
1140 fname = tv_get_string(&argvars[0]); 1140 fname = tv_get_string(&argvars[0]);
1141 1141
1142 rettv->v_type = VAR_STRING; 1142 rettv->v_type = VAR_STRING;
1143 if (mch_stat((char *)fname, &st) >= 0) 1143 if (mch_stat((char *)fname, &st) >= 0)
1152 f_getfsize(typval_T *argvars, typval_T *rettv) 1152 f_getfsize(typval_T *argvars, typval_T *rettv)
1153 { 1153 {
1154 char_u *fname; 1154 char_u *fname;
1155 stat_T st; 1155 stat_T st;
1156 1156
1157 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) 1157 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
1158 return; 1158 return;
1159 1159
1160 fname = tv_get_string(&argvars[0]); 1160 fname = tv_get_string(&argvars[0]);
1161 if (mch_stat((char *)fname, &st) >= 0) 1161 if (mch_stat((char *)fname, &st) >= 0)
1162 { 1162 {
1182 f_getftime(typval_T *argvars, typval_T *rettv) 1182 f_getftime(typval_T *argvars, typval_T *rettv)
1183 { 1183 {
1184 char_u *fname; 1184 char_u *fname;
1185 stat_T st; 1185 stat_T st;
1186 1186
1187 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) 1187 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
1188 return; 1188 return;
1189 fname = tv_get_string(&argvars[0]); 1189 fname = tv_get_string(&argvars[0]);
1190 if (mch_stat((char *)fname, &st) >= 0) 1190 if (mch_stat((char *)fname, &st) >= 0)
1191 rettv->vval.v_number = (varnumber_T)st.st_mtime; 1191 rettv->vval.v_number = (varnumber_T)st.st_mtime;
1192 else 1192 else
1228 { 1228 {
1229 char_u *fname; 1229 char_u *fname;
1230 stat_T st; 1230 stat_T st;
1231 char_u *type = NULL; 1231 char_u *type = NULL;
1232 1232
1233 if (in_vim9script() && check_for_string(&argvars[0], 1) == FAIL) 1233 if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
1234 return; 1234 return;
1235 fname = tv_get_string(&argvars[0]); 1235 fname = tv_get_string(&argvars[0]);
1236 1236
1237 rettv->v_type = VAR_STRING; 1237 rettv->v_type = VAR_STRING;
1238 if (mch_lstat((char *)fname, &st) >= 0) 1238 if (mch_lstat((char *)fname, &st) >= 0)
2409 char_u buf[NUMBUFLEN]; 2409 char_u buf[NUMBUFLEN];
2410 char_u buf2[NUMBUFLEN]; 2410 char_u buf2[NUMBUFLEN];
2411 int error = FALSE; 2411 int error = FALSE;
2412 2412
2413 if (in_vim9script() 2413 if (in_vim9script()
2414 && (check_for_string(&argvars[1], 2) == FAIL 2414 && (check_for_string_arg(argvars, 1) == FAIL
2415 || check_for_string(&argvars[2], 3) == FAIL 2415 || check_for_string_arg(argvars, 2) == FAIL
2416 || check_for_string(&argvars[3], 4) == FAIL)) 2416 || check_for_string_arg(argvars, 3) == FAIL))
2417 return; 2417 return;
2418 save = (int)tv_get_number_chk(&argvars[0], &error); 2418 save = (int)tv_get_number_chk(&argvars[0], &error);
2419 title = tv_get_string_chk(&argvars[1]); 2419 title = tv_get_string_chk(&argvars[1]);
2420 initdir = tv_get_string_buf_chk(&argvars[2], buf); 2420 initdir = tv_get_string_buf_chk(&argvars[2], buf);
2421 defname = tv_get_string_buf_chk(&argvars[3], buf2); 2421 defname = tv_get_string_buf_chk(&argvars[3], buf2);