Björn Linse
b33e375b2b
robustness: avoid adding offset to NULL pointer
...
UBSAN with clang 10.0 is checking for adding offsets to a `NULL` pointer
which is not allowed. This is not yet checked in the version of clang
used in CI (7.0.0). I will work on cases of this so that tests passes
locally for me.
This could be tested in CI by either upgrading the clang of the
ASAN/UBSAN to 10.0, or add yet another CI target which builds with
clang 10.0.
2020-09-04 23:29:51 +02:00
Billy Su
1805fb469a
vim-patch:8.2.0111: VAR_SPECIAL is also used for booleans
...
Problem: VAR_SPECIAL is also used for booleans.
Solution: Add VAR_BOOL for better type checking.
9b4a15d5db
2020-06-06 23:24:58 +08:00
Justin M. Keyes
f2c6164b04
build: -Wmissing-prototypes
...
ref #343
Though I don't see a strong benefit, it isn't too much of a burden, and
maybe avoids confusion in some cases.
2019-02-04 04:00:20 +01:00
ZyX
5acda03576
eval/decode: Silence PVS/V547: code written for 32-bit integers
2018-04-09 10:29:34 +03:00
Justin M. Keyes
de0a9548f7
Merge #7806 from ZyX-I/list-stat
...
Add a way to collect list usage statistics
2018-01-15 23:35:20 +01:00
ZyX
9ea1752d60
*: Provide list length when allocating lists
2018-01-14 01:33:16 +03:00
Justin M. Keyes
18d244eded
coverity/169163: decode_string: Null pointer deref
...
*** CID 169163: Null pointer dereferences (FORWARD_NULL)
/src/nvim/eval/decode.c: 290 in decode_string()
284 if (elw_ret == -1) {
285 tv_clear(&tv);
286 return (typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED };
287 }
288 return tv;
289 } else {
>>> CID 169163: Null pointer dereferences (FORWARD_NULL)
>>> Passing null pointer "s" to "xmemdupz", which dereferences it. (The dereference is assumed on the basis of the 'nonnull' parameter attribute.)
290 return (typval_T) {
291 .v_type = VAR_STRING,
292 .v_lock = VAR_UNLOCKED,
293 .vval = { .v_string = (char_u *)(
294 s_allocated ? (char *)s : xmemdupz(s, len)) },
295 };
2018-01-11 10:45:16 +01:00
ZyX
0c533a488f
*: Remove most calls to tv_list_item_alloc
...
Still left calls in eval/typval.c and test/unit/eval/helpers.lua. Latter is the
only reason why function did not receive `static` modifier.
2017-12-24 14:09:35 +03:00
ZyX
f4132fb38b
*: Fix linter errors
2017-12-11 10:19:20 +03:00
ZyX
ac4bbf55f6
*: Hide list implementation in other files as well
2017-12-10 22:04:43 +03:00
ZyX
274f32d42e
*: Start hiding list implementation
...
Most of files, except for eval.c and eval/* were only processed by perl.
2017-12-10 04:00:52 +03:00
Adrian Neumann
8f03014e88
eval/decode.c: Avoid NULL arg to memchr() #7332
...
Clang complains because memchr has undefined behavior if the ptr is
NULL, even if len==0.
Helped-by: Nikolai Aleksandrovich Pavlov <kp-pav@yandex.ru >
2017-11-06 05:00:58 +01:00
James McCoy
43534cab02
lint
2017-06-04 22:12:14 -04:00
James McCoy
81be7358be
vim-patch:7.4.1976
...
Problem: Number variables are not 64 bits while they could be.
Solution: Add the num64 feature. (Ken Takata)
22fcfad292
2017-06-04 22:12:13 -04:00
ZyX
09f849b600
Merge branch 'master' into luaviml'/lua
2017-05-08 15:43:45 +03:00
ZyX
c2f3e361c5
*: Add comment to all C files
2017-04-19 19:11:50 +03:00
ZyX
ab4d13e2fa
Merge branch 'master' into luaviml'/lua
2017-04-10 22:21:06 +03:00
ZyX
7701014b65
*: Remove useless asserts
2017-04-08 20:22:46 +03:00
ZyX
ab19fa1552
*: Fix linter errors
...
Drops comments `// for …` that do not pass linter for them being unmaintainable
and fast to becoming incomplete or even incorrect.
Mention @dedmass
2017-04-08 19:20:42 +03:00
ZyX
e814695223
eval/*code,shada: Drop support for converting UTF-8 from/to p_enc
...
Not needed any longer since p_enc is always utf-8.
2017-04-08 19:20:41 +03:00
ZyX
6006cb74ef
eval/decode: Omit calling convert_setup for each string
...
Uses the same trick eval/encode does.
2017-04-08 19:00:05 +03:00
ZyX
e586047a53
eval/decode,shada: Do not forget to clean up converters
2017-04-08 19:00:04 +03:00
ZyX
043d8ff9f2
Merge branch 'master' into luaviml'/lua
2017-04-08 01:54:58 +03:00
James McCoy
f4a3a96b68
Add handling for MSGPACK_OBJECT_FLOAT{32,64}
...
msgpack-c previously only had MSGPACK_OBJECT_FLOAT, which was a 64-bit
value. Now, 32-bit and 64-bit floats are supported as distinct types,
but we'll simply continue to treat everything as 64-bit types.
2017-03-30 21:35:36 -04:00
ZyX
e18a578308
*: Move some dictionary functions to typval.h and use char*
...
Also fixes buffer reusage in setmatches() and complete().
2017-03-29 10:07:42 +03:00
ZyX
fb146e80aa
eval: Split eval.c into smaller files
2017-03-29 10:05:06 +03:00
ZyX
45feaa73d0
eval/decode: Fix memory leak in JSON functions
2017-03-27 00:12:22 +03:00
ZyX
f551df17f3
viml/executor: Directly generate typval_T values
...
Note: this will *still* crash when using API in cases similar to the one
described in first commit. Just it needs different code to reproduce.
2017-03-27 00:11:24 +03:00
ZyX
d007c2977b
lib/kvec: Do not use kv_init unless needed
2016-05-30 21:19:52 +03:00
ZyX
8cfb272c74
lib/kvec: Remove useless type argument from kv_push macros
2016-05-30 21:14:39 +03:00
ZyX
494b1c9bee
*: Make set_vim_var_\* functions have proper argument types
2016-04-18 02:48:20 +03:00
ZyX
c129f6cfaf
eval/decode: Accept \r
as space character
2016-04-18 02:48:20 +03:00
ZyX
d06c2a1b18
eval/decode: Do not overflow when parsing -
...
Also makes if’s less nested.
2016-04-18 02:48:20 +03:00
ZyX
2b0d46195b
eval/decode: Clarify meaning of some pointer arguments
2016-04-18 02:48:20 +03:00
ZyX
0c598774d8
eval/decode: Fix typo in internal error message
2016-04-18 02:48:20 +03:00
ZyX
515fea1ef0
eval/decode: Reject even more numbers
...
Rejects leading zeroes and numbers like 1.e+5 (decimal dot with missing number
with signed exponent).
2016-04-18 02:48:20 +03:00
ZyX
69ce17878e
*: Fix linter errors
2016-04-18 02:48:20 +03:00
ZyX
9a56fcb2e8
eval/decode: Rewrite json_decode_string end as suggested by oni-link
2016-04-18 02:48:20 +03:00
ZyX
9c543f2e24
eval/decode: Reject more numbers, accept 1e5
2016-04-18 02:48:20 +03:00
ZyX
032ac502ff
eval/decode: Do not loose high surrogates followed by high surrogates
2016-04-18 02:48:20 +03:00
ZyX
eb806c9620
eval/decode: Make sure that error messages do not cause overflow
2016-04-18 02:48:20 +03:00
ZyX
52c6cc2189
eval/decode: Make sure that parsing strings does not overflow
2016-04-18 02:48:20 +03:00
ZyX
224d7df630
eval/decode: Make sure that blank input does not crash Neovim
2016-04-18 02:48:20 +03:00
ZyX
394830631f
eval/decode: Make sure that U+00C3 is parsed correctly
2016-04-18 02:48:20 +03:00
ZyX
4eb5d05f01
eval/decode: Avoid overflow when parsing incomplete null/true/false
...
Note: second test does not crash or produce asan errors, even though it should.
2016-04-18 02:48:20 +03:00
ZyX
4a29995fe7
eval/decode: Rename brackets in error messages
...
U+007D is officially RIGHT CURLY BRACKET.
U+005D is officially RIGHT SQUARE BRACKET.
2016-04-18 02:48:20 +03:00
ZyX
1fc84ae2cd
eval/decode: Record that obj
may be freed
2016-04-18 02:48:20 +03:00
ZyX
4ff5d6e41c
eval/decode: Also use VAR_UNLOCKED in old code
2016-04-18 02:48:20 +03:00
ZyX
942e0b338c
encode: Handle incomplete surrogates like \uSURR\uOTHR
properly
2016-04-18 02:48:20 +03:00
ZyX
7124329bd9
*: Fix memory leaks found by clang sanitizer
2016-04-18 02:46:34 +03:00