vox-etf 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/vox/decoder.hpp +2 -2
- data/ext/vox/encoder.hpp +18 -7
- data/lib/vox/etf/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a6a2cc3e5abff452aed1b87b83f3c9906fa673cdac9251b92051492d7de0ff2
|
4
|
+
data.tar.gz: 2caddaa1b5163345f676d9649c624e9ec2580e770d32dddecd2325800e9845d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56ff3b112058ec393869a0532905bad5f27adcd533a7427cacea86ffdbae49b261ca4a258dc33683af52bf0bce0c44fb6554a08b11d99a6c2a1c3862deb1ae8c
|
7
|
+
data.tar.gz: 96482eb0de9485c5938724b8d06d136028907ec99270a0bf46239d33b6313b1ad7207df021206099c11528f3dcbde8faeabdf0ba18f4cb007dad9061dc01f21c
|
data/ext/vox/decoder.hpp
CHANGED
@@ -362,9 +362,9 @@ namespace etf
|
|
362
362
|
{
|
363
363
|
const uint32_t decompressed_size = read32();
|
364
364
|
|
365
|
-
|
365
|
+
unsigned long source_size = decompressed_size;
|
366
366
|
uint8_t *out_buffer = (uint8_t *)malloc(decompressed_size);
|
367
|
-
const int ret = uncompress(out_buffer, &source_size, (const unsigned char *)(data + offset), (
|
367
|
+
const int ret = uncompress(out_buffer, &source_size, (const unsigned char *)(data + offset), (uLong)(size - offset));
|
368
368
|
|
369
369
|
offset += source_size;
|
370
370
|
if (ret != Z_OK)
|
data/ext/vox/encoder.hpp
CHANGED
@@ -99,11 +99,11 @@ namespace etf
|
|
99
99
|
|
100
100
|
void encode_fixnum(VALUE fixnum)
|
101
101
|
{
|
102
|
-
|
103
|
-
if (
|
104
|
-
erlpack_append_small_integer(erl_buff, (
|
102
|
+
uint32_t n = NUM2UINT(fixnum);
|
103
|
+
if (n > 0 && n <= UINT8_MAX)
|
104
|
+
erlpack_append_small_integer(erl_buff, (uint8_t)n);
|
105
105
|
else
|
106
|
-
erlpack_append_integer(erl_buff,
|
106
|
+
erlpack_append_integer(erl_buff, n);
|
107
107
|
}
|
108
108
|
|
109
109
|
void encode_bignum(VALUE bignum)
|
@@ -138,15 +138,20 @@ namespace etf
|
|
138
138
|
|
139
139
|
void encode_array(VALUE array)
|
140
140
|
{
|
141
|
-
|
141
|
+
uint64_t size = RARRAY_LEN(array);
|
142
142
|
if (size == 0)
|
143
143
|
{
|
144
144
|
erlpack_append_nil_ext(erl_buff);
|
145
145
|
return;
|
146
146
|
}
|
147
|
+
else if (size > UINT32_MAX)
|
148
|
+
{
|
149
|
+
rb_raise(rb_eRangeError, "Array size is too large to fit into a 32 bit integer.");
|
150
|
+
return;
|
151
|
+
}
|
147
152
|
|
148
153
|
erlpack_append_list_header(erl_buff, size);
|
149
|
-
for (
|
154
|
+
for (size_t index = 0; index < size; index++)
|
150
155
|
{
|
151
156
|
encode_object(RARRAY_AREF(array, index));
|
152
157
|
}
|
@@ -166,7 +171,13 @@ namespace etf
|
|
166
171
|
|
167
172
|
void encode_hash(VALUE hash)
|
168
173
|
{
|
169
|
-
|
174
|
+
uint64_t size = RHASH_SIZE(hash);
|
175
|
+
if (size > UINT32_MAX)
|
176
|
+
{
|
177
|
+
rb_raise(rb_eRangeError, "Hash size is too large to fit into a 32 bit integer");
|
178
|
+
return;
|
179
|
+
}
|
180
|
+
|
170
181
|
erlpack_append_map_header(erl_buff, size);
|
171
182
|
VALUE keys = rb_funcall(hash, rb_intern("keys"), 0);
|
172
183
|
|
data/lib/vox/etf/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vox-etf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Carey
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: '0'
|
148
148
|
requirements: []
|
149
|
-
rubygems_version: 3.
|
149
|
+
rubygems_version: 3.1.2
|
150
150
|
signing_key:
|
151
151
|
specification_version: 4
|
152
152
|
summary: ETF decoding/encoding for vox.
|