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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4435ae55a1631c64aa810ea8f6f0beb899f1e3363498f36cd13b2cd661704a97
4
- data.tar.gz: 23df68f172a4d60529e72b40d02c74fbe96a342bacf534aad606047c54543167
3
+ metadata.gz: 5a6a2cc3e5abff452aed1b87b83f3c9906fa673cdac9251b92051492d7de0ff2
4
+ data.tar.gz: 2caddaa1b5163345f676d9649c624e9ec2580e770d32dddecd2325800e9845d0
5
5
  SHA512:
6
- metadata.gz: ca076026d2625686aa7f8f6428ff33a6a7b40571eecb68478ed4684883658854e749e123053544d1861f9bff13b9c8f7d310047afa95ad70ed059036a1b0e4a3
7
- data.tar.gz: b708e0871cfae5fb34b74f28024e607684ca386eaf0bc9c9ec9d668a900ab7b3e89f3d2a1b101d4b7fffd3dc870f91c4fb1b11101b01d6ac4e40d0de1b856998
6
+ metadata.gz: 56ff3b112058ec393869a0532905bad5f27adcd533a7427cacea86ffdbae49b261ca4a258dc33683af52bf0bce0c44fb6554a08b11d99a6c2a1c3862deb1ae8c
7
+ data.tar.gz: 96482eb0de9485c5938724b8d06d136028907ec99270a0bf46239d33b6313b1ad7207df021206099c11528f3dcbde8faeabdf0ba18f4cb007dad9061dc01f21c
@@ -362,9 +362,9 @@ namespace etf
362
362
  {
363
363
  const uint32_t decompressed_size = read32();
364
364
 
365
- uint64_t source_size = decompressed_size;
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), (uint64_t)(size - 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)
@@ -99,11 +99,11 @@ namespace etf
99
99
 
100
100
  void encode_fixnum(VALUE fixnum)
101
101
  {
102
- long l = FIX2LONG(fixnum);
103
- if (l > 0 && l <= 0xFF)
104
- erlpack_append_small_integer(erl_buff, (unsigned char)l);
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, l);
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
- uint32_t size = RARRAY_LEN(array);
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 (uint32_t index = 0; index < size; index++)
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
- uint32_t size = RHASH_SIZE(hash);
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
 
@@ -21,6 +21,6 @@ module Vox
21
21
  # end
22
22
 
23
23
  # Gem version
24
- VERSION = '0.1.6'
24
+ VERSION = '0.1.7'
25
25
  end
26
26
  end
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.6
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-12 00:00:00.000000000 Z
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.0.3
149
+ rubygems_version: 3.1.2
150
150
  signing_key:
151
151
  specification_version: 4
152
152
  summary: ETF decoding/encoding for vox.