Yukihiro "Matz" Matsumoto
64ea7f0930
doc/guides/link.md: fixed typo.
2022-07-29 10:24:41 +09:00
Yukihiro "Matz" Matsumoto
23cb2a73ff
bigint.c (mpz_move): reduce copying of digits arrays.
2022-07-29 10:24:41 +09:00
Yukihiro "Matz" Matsumoto
dcf9e32870
Merge pull request #5759 from jbampton/lint-modified-files
...
Super-Linter: Lint modified files only
2022-07-29 10:24:01 +09:00
John Bampton
9ddc6c1915
Super-Linter: Lint modified files only
...
Following the basic example shown here
https://github.com/github/super-linter#example-connecting-github-action-workflow
2022-07-29 09:19:28 +10:00
Yukihiro "Matz" Matsumoto
33b11daca7
Merge pull request #5758 from jbampton/pre-commit-autoupdate
...
pre-commit autoupdate
2022-07-29 07:43:59 +09:00
John Bampton
718547be2b
pre-commit autoupdate
...
https://pre-commit.com/#pre-commit-autoupdate
2022-07-29 08:29:12 +10:00
Yukihiro "Matz" Matsumoto
d0780c0525
vm.c: should cast bigint length to unsigned.
...
Otherwise length>127 would be considered as negative.
2022-07-28 15:21:32 +09:00
Yukihiro "Matz" Matsumoto
de2ea3c389
bigint.c (udiv): avoid integer underflow.
2022-07-28 15:07:22 +09:00
Yukihiro "Matz" Matsumoto
9592b7e4ec
mruby_proto_fuzzer.cpp: try to print the code before evaluating it.
2022-07-27 13:42:28 +09:00
Yukihiro "Matz" Matsumoto
4620485135
Merge pull request #5756 from mruby/dependabot/github_actions/github/super-linter-4.9.5
...
build(deps): bump github/super-linter from 4.9.4 to 4.9.5
2022-07-27 09:23:05 +09:00
dependabot[bot]
a65f953356
build(deps): bump github/super-linter from 4.9.4 to 4.9.5
...
Bumps [github/super-linter](https://github.com/github/super-linter ) from 4.9.4 to 4.9.5.
- [Release notes](https://github.com/github/super-linter/releases )
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md )
- [Commits](https://github.com/github/super-linter/compare/v4.9.4...v4.9.5 )
---
updated-dependencies:
- dependency-name: github/super-linter
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2022-07-26 14:09:39 +00:00
Yukihiro "Matz" Matsumoto
25a32ed681
bigint.c (ulshift,urshift): check uzero before actual shifting.
...
Bit-shifting zero always result in zero.
2022-07-26 15:06:06 +09:00
Yukihiro "Matz" Matsumoto
97b9bfc4fa
bigint.c (mpz_init_set_str): move negative trick to mrb_bint_new_str().
...
It used to take negative base to generate negative value. But this weird
trick is now belong to the mruby API side.
2022-07-26 15:03:52 +09:00
Yukihiro "Matz" Matsumoto
c2e4b82d84
codegen.c (new_litbint): remove surrounding braces.
...
It was to allow local variable declarations, but now we allow
declarations in the middle.
2022-07-26 13:55:54 +09:00
Yukihiro "Matz" Matsumoto
26ce85bd5d
bigint.c (ucmp): fixed error with zero length zero value.
...
Big integers have two kind of zero values:
- digits in `p` array are all zeros
- length `sn` is zero
The old code crashed with the latter zero.
2022-07-26 00:13:15 +09:00
Yukihiro "Matz" Matsumoto
e8ce82bf31
codegen.c (new_litbint): forgot else in a107b85.
2022-07-26 00:11:53 +09:00
Yukihiro "Matz" Matsumoto
3d1b5d2b06
Merge pull request #5754 from artichoke/lopopolo/class-name-use-after-free
...
Fix possible use after free in `mrb_class_find_path`
2022-07-25 15:41:07 +09:00
Yukihiro "Matz" Matsumoto
c6bf4eaac0
codegen.c (new_litbint): renamed from new_litbn.
2022-07-25 15:33:43 +09:00
Yukihiro "Matz" Matsumoto
a107b850eb
codegen.c (new_bitbn): fixed wrong packing of integer radix.
2022-07-25 15:31:43 +09:00
Yukihiro "Matz" Matsumoto
d2d105b589
bigint.c (mpz_get_int): should work with zero (i.e. y->p == NULL).
2022-07-25 14:54:41 +09:00
Yukihiro "Matz" Matsumoto
6a4c8e36b5
bigint.c (udiv): should trim remainder before bit shifting.
2022-07-25 14:54:41 +09:00
Yukihiro "Matz" Matsumoto
e02e9ae434
bigint.c (mpz_mmod): should call mpz_clear() for internal mpz_t.
2022-07-25 14:54:41 +09:00
Yukihiro "Matz" Matsumoto
7d5475916c
bigint.c (udiv): avoid out of bound access in division.
2022-07-25 14:54:40 +09:00
Yukihiro "Matz" Matsumoto
657263446e
bigint.c: cosmetic changes (add spaces, etc.)
2022-07-25 14:54:40 +09:00
Yukihiro "Matz" Matsumoto
866ab88c94
mruby-os-memsize/memsize.c: add fall through comment.
2022-07-25 10:58:03 +09:00
Yukihiro "Matz" Matsumoto
13d909bd3c
array.c: new configuration MRB_ARY_LENGTH_MAX.
...
The default value is 2**17 entries. If you want to avoid the limitation,
set this value to 0.
2022-07-25 10:58:02 +09:00
Yukihiro "Matz" Matsumoto
c4cb416460
string.c: new configuration MRB_STR_LENGTH_MAX.
...
The default value is 1MB. If you want to avoid the limitation, set this
value to 0.
2022-07-25 10:58:02 +09:00
Yukihiro "Matz" Matsumoto
199758c0b9
bigint.c (mpz_sizeinbase): should return size_t instead of int.
...
`int` may overflow.
2022-07-25 10:58:02 +09:00
Ryan Lopopolo
547d465340
Fix possible use after free in mrb_class_find_path
...
`mrb_class_find_path` resolves a `char*` pointer to a class name string
by calling `mrb_class_name`. It then allocates a new string with
capacity 40 to copy that `char*` into.
https://github.com/mruby/mruby/blob/e04184185ab43b94980550e850d8813a415fa438/src/variable.c#L1111-L1112
`mrb_class_name` resolves the class name via `class_name_str`, which
returns an `mrb_value` with type tag `MRB_TT_STRING` and backed by an
`RString*`. Then `mrb_class_name` extracts the `RSTRING_PTR`:
https://github.com/mruby/mruby/blob/e04184185ab43b94980550e850d8813a415fa438/src/class.c#L2133-L2134
That `RString*`-backed `mrb_value` ultimately comes from `mrb_class_path`
which resolves the string from the symbol table:
https://github.com/mruby/mruby/blob/e04184185ab43b94980550e850d8813a415fa438/src/class.c#L2111
The allocation of the target `str` after resolving the class name
`mrb_value` and extracting its pointer is fragile and assumes the
`RString*` is "static". If the `RString*` is not static, the
interleaving of extracting the `RSTRING_PTR` followed by a subsequent
allocation might result in the class name `mrb_value` being garbage
collected, which will leave the extracted pointer invalid.
Fix this bad interleaving by allocating the destination string first
before taking a raw pointer to an `RString*`.
2022-07-24 09:33:51 -07:00
Yukihiro "Matz" Matsumoto
e04184185a
bigint.c: heavy restructuring of big-integers.
...
Instead of splitting mp_limb by bit operations (using HIGH/LOW macros),
now we use mp_limb2 (which is bigger integer size, e.g uint64_t). It
makes operations (especially mulitiplication) a lot faster. As a side
effect, it also reduces memory consumption (16,452,033 -> 15,545,853 on
my Linux machine).
Other changes:
- trailing zeros are removed after operations.
- division algorithm is simplified.
2022-07-23 07:50:30 +09:00
Yukihiro "Matz" Matsumoto
c0a636c007
mruby-os-memsize/memsize.c: add up digit spaces for big-integers.
2022-07-21 20:56:32 +09:00
Yukihiro "Matz" Matsumoto
8bd1c56465
bigint.c (mpz_get_str): fixed wrong loop termination condition.
2022-07-21 20:40:35 +09:00
Yukihiro "Matz" Matsumoto
450382735b
bigint.c (mrb_bint_to_s): shortcut for bigint zero.
2022-07-20 14:40:45 +09:00
Yukihiro "Matz" Matsumoto
a4ce63abc5
bigint.c (mpz_sizeinbase): check zero length bigint.
2022-07-20 14:40:12 +09:00
Yukihiro "Matz" Matsumoto
cfea0c28a0
bigint.c (digits): check zero length bigint.
2022-07-20 14:39:05 +09:00
Yukihiro "Matz" Matsumoto
2b07489372
codegen.c: keep stack space for block argument.
2022-07-20 14:27:02 +09:00
Yukihiro "Matz" Matsumoto
b84bca666f
bigint.c (mpz_get_int): avoid buffer overflow.
2022-07-19 18:20:28 +09:00
Yukihiro "Matz" Matsumoto
a99d003622
Merge pull request #5751 from dearblue/mrb_insn_data
...
Fix the first operand of `struct mrb_insn_data` to 32 bits
2022-07-19 07:44:45 +09:00
Yukihiro "Matz" Matsumoto
714e8a57af
bigint.c: avoid default allocation.
...
The digit space would be allocated on demand.
2022-07-19 00:52:54 +09:00
Yukihiro "Matz" Matsumoto
04ec65b87a
mruby-numeric-ext/numeric.rb: add reference description.
...
- zero?
- nonzero?
- positive?
- negative?
2022-07-18 15:46:47 +09:00
Yukihiro "Matz" Matsumoto
56af812b98
mruby-numeric-ext/numeric.rb: bit predicates are implemented in Ruby now.
2022-07-18 12:59:10 +09:00
Yukihiro "Matz" Matsumoto
a3f2470907
Merge pull request #5749 from dearblue/patch-5565
...
Corrected the number of registers in the `Class#new` method
2022-07-18 09:26:34 +09:00
Yukihiro "Matz" Matsumoto
0e530dbb63
numeric.c: fix smallint op bigint error in bitwise logical operators.
2022-07-18 08:29:52 +09:00
dearblue
1d95dd6e9b
Fix the first operand of struct mrb_insn_data to 32 bits
...
Because there is `W` type, at least 24 bits must be represented.
2022-07-17 20:27:42 +09:00
Yukihiro "Matz" Matsumoto
2d749f5275
mruby-compar-ext/compar.rb (clamp): update document; ref #5748
2022-07-17 18:53:55 +09:00
Yukihiro "Matz" Matsumoto
33bf027d79
mruby-compar-ext/compar.rb (clamp): support endless/beginless range.
...
Ref #5748
2022-07-17 18:52:59 +09:00
dearblue
c621d3cb95
Corrected the number of registers in the Class#new method
...
`OP_SEND R4 :allocate 0` requires an an invisible `nil` block to `R5`.
If `R5` is not allocated, this can lead to unexpected results due to buffer overflow.
This problem is caused by #5565 .
ref. commit 33792c2a02
2022-07-17 10:38:53 +09:00
Yukihiro "Matz" Matsumoto
b1bfa1d5c8
mruby-compar-ext/compar.rb (clamp): should take ranges too; fix #5748
2022-07-17 07:49:34 +09:00
Yukihiro "Matz" Matsumoto
53f131d8f1
bigint.c: remove unnecessary break in for loop.
2022-07-16 12:26:08 +09:00
Yukihiro "Matz" Matsumoto
4f737b8afb
bigint.c: adjust integer types to remove warnings.
2022-07-15 18:37:45 +09:00