diff options
Diffstat (limited to 'data/vim/patches/8.1.0180')
-rw-r--r-- | data/vim/patches/8.1.0180 | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0180 b/data/vim/patches/8.1.0180 new file mode 100644 index 000000000..b5494c45b --- /dev/null +++ b/data/vim/patches/8.1.0180 @@ -0,0 +1,160 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0180 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0180 +Problem: Static analysis errors in Lua interface. (Coverity) +Solution: Check for NULL pointers. +Files: src/if_lua.c + + +*** ../vim-8.1.0179/src/if_lua.c Sat Jul 7 23:07:35 2018 +--- src/if_lua.c Fri Jul 13 22:05:37 2018 +*************** +*** 958,964 **** + typval_T v; + if (d->dv_lock) + luaL_error(L, "dict is locked"); +! if (key != NULL && *key == NUL) + luaL_error(L, "empty key"); + if (!lua_isnil(L, 3)) { /* read value? */ + luaV_checktypval(L, 3, &v, "setting dict item"); +--- 958,966 ---- + typval_T v; + if (d->dv_lock) + luaL_error(L, "dict is locked"); +! if (key == NULL) +! return 0; +! if (*key == NUL) + luaL_error(L, "empty key"); + if (!lua_isnil(L, 3)) { /* read value? */ + luaV_checktypval(L, 3, &v, "setting dict item"); +*************** +*** 968,980 **** + di = dict_find(d, key, -1); + if (di == NULL) /* non-existing key? */ + { +! if (lua_isnil(L, 3)) return 0; + di = dictitem_alloc(key); +! if (di == NULL) return 0; + if (dict_add(d, di) == FAIL) + { +! vim_free(di); +! return 0; + } + } + else +--- 970,984 ---- + di = dict_find(d, key, -1); + if (di == NULL) /* non-existing key? */ + { +! if (lua_isnil(L, 3)) +! return 0; + di = dictitem_alloc(key); +! if (di == NULL) +! return 0; + if (dict_add(d, di) == FAIL) + { +! vim_free(di); +! return 0; + } + } + else +*************** +*** 1066,1080 **** + + f->args.vval.v_list = list_alloc(); + rettv.v_type = VAR_UNKNOWN; /* as in clear_tv */ +! for (i = 0; i < n; i++) { +! luaV_checktypval(L, i + 2, &v, "calling funcref"); +! list_append_tv(f->args.vval.v_list, &v); +! } +! status = func_call(f->tv.vval.v_string, &f->args, NULL, f->self, &rettv); +! if (status == OK) +! luaV_pushtypval(L, &rettv); +! clear_tv(&f->args); +! clear_tv(&rettv); + if (status != OK) + luaL_error(L, "cannot call funcref"); + return 1; +--- 1070,1090 ---- + + f->args.vval.v_list = list_alloc(); + rettv.v_type = VAR_UNKNOWN; /* as in clear_tv */ +! if (f->args.vval.v_list == NULL) +! status = FAIL; +! else +! { +! for (i = 0; i < n; i++) { +! luaV_checktypval(L, i + 2, &v, "calling funcref"); +! list_append_tv(f->args.vval.v_list, &v); +! } +! status = func_call(f->tv.vval.v_string, &f->args, +! NULL, f->self, &rettv); +! if (status == OK) +! luaV_pushtypval(L, &rettv); +! clear_tv(&f->args); +! clear_tv(&rettv); +! } + if (status != OK) + luaL_error(L, "cannot call funcref"); + return 1; +*************** +*** 1560,1572 **** + char_u *key; + dictitem_T *di; + typval_T v; + lua_pushvalue(L, -2); /* dup key in case it's a number */ + key = (char_u *) lua_tostring(L, -1); +! if (key != NULL && *key == NUL) + luaL_error(L, "table has empty key"); + luaV_checktypval(L, -2, &v, "vim.dict"); /* value */ + di = dictitem_alloc(key); +! if (di == NULL || dict_add(d, di) == FAIL) { + vim_free(di); + lua_pushnil(L); + return 1; +--- 1570,1589 ---- + char_u *key; + dictitem_T *di; + typval_T v; ++ + lua_pushvalue(L, -2); /* dup key in case it's a number */ + key = (char_u *) lua_tostring(L, -1); +! if (key == NULL) +! { +! lua_pushnil(L); +! return 1; +! } +! if (*key == NUL) + luaL_error(L, "table has empty key"); + luaV_checktypval(L, -2, &v, "vim.dict"); /* value */ + di = dictitem_alloc(key); +! if (di == NULL || dict_add(d, di) == FAIL) +! { + vim_free(di); + lua_pushnil(L); + return 1; +*** ../vim-8.1.0179/src/version.c Fri Jul 13 16:31:11 2018 +--- src/version.c Fri Jul 13 22:05:56 2018 +*************** +*** 791,792 **** +--- 791,794 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 180, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +240. You think Webster's Dictionary is a directory of WEB sites. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |