nonnative 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8220ca25997b624a13ebf5f3f6a046af6bf05ee7428b21b96454d7c23ad42bef
4
- data.tar.gz: 5a1884b26d92f57b54631ef22a4c2d6b3f16690c81364353ecb3e2d941b39638
3
+ metadata.gz: 304dcea40b84eda206fe9964fe1479a54e0188f52f2a5300dbcf992101cab2b3
4
+ data.tar.gz: a6adb1b816c424709ab337d1b845dd106ff5141ddb6f26bfe73318c4f51bed23
5
5
  SHA512:
6
- metadata.gz: d026441a2ed85facab82a48a8967e246d6c717c00c5c0039fb434feb585fe35fb23fbfa06732f85ec5491d0febcdda056d1cf4264a014efe432b87dfc705275f
7
- data.tar.gz: 2cc84560c80a27144d3176b3e019a6ab9c86e32c2215e774d97d5a58927c34dda006a3da8f3b5b356b19bc7e2e96fb863b2bc168c9f4ac3e7a91f7181f08c57d
6
+ metadata.gz: a7d8afad5ad7ff9b550c67fe73a683da85ae1bcfa611e0b25b0d570f44ebd5beba47ab50287d58206a51d6d61722bf42ae893929d2c4a99d5ea53b2e033fae91
7
+ data.tar.gz: 506907d924a16c49d583a91e78a7c6e17bb03e3e5d879f00f43e8d4313fb57957bf545538d2953d056ab0c3eecb94ff29ab9a1af22547c890c1a1e56e3f0335c
data/.circleci/config.yml CHANGED
@@ -25,8 +25,8 @@ jobs:
25
25
  - vendor
26
26
  - run: make lint
27
27
  - run: make sec
28
- - run: COVERAGE_NAME="Cucumber Features" make features
29
- - run: COVERAGE_NAME="Cucumber Benchmarks" make benchmarks
28
+ - run: COVERAGE_NAME="Features" make features
29
+ - run: COVERAGE_NAME="Benchmarks" make benchmarks
30
30
  - store_test_results:
31
31
  path: test/reports
32
32
  - store_artifacts:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nonnative (2.10.0)
4
+ nonnative (2.11.0)
5
5
  concurrent-ruby (>= 1, < 2)
6
6
  config (>= 5, < 6)
7
7
  cucumber (>= 7, < 11)
@@ -29,7 +29,35 @@ module Nonnative
29
29
  private
30
30
 
31
31
  def corrupt(data)
32
- bytes = data.bytes
32
+ payload, delimiter = split_trailing_delimiter(data)
33
+ return "\0#{delimiter}" if payload.empty?
34
+
35
+ "#{corrupt_payload(payload)}#{delimiter}"
36
+ end
37
+
38
+ def split_trailing_delimiter(data)
39
+ index = trailing_delimiter_start(data)
40
+ payload = data.byteslice(0, index)
41
+ delimiter = data.byteslice(index, data.bytesize - index) || ''
42
+
43
+ [payload, delimiter]
44
+ end
45
+
46
+ def trailing_delimiter_start(data)
47
+ index = data.bytesize
48
+
49
+ while index.positive?
50
+ byte = data.getbyte(index - 1)
51
+ break unless [10, 13].include?(byte)
52
+
53
+ index -= 1
54
+ end
55
+
56
+ index
57
+ end
58
+
59
+ def corrupt_payload(payload)
60
+ bytes = payload.bytes
33
61
  corrupted = bytes.shuffle
34
62
  return corrupted.pack('C*') unless corrupted == bytes
35
63
 
@@ -4,5 +4,5 @@ module Nonnative
4
4
  # The current gem version.
5
5
  #
6
6
  # @return [String]
7
- VERSION = '2.10.0'
7
+ VERSION = '2.11.0'
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nonnative
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.0
4
+ version: 2.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alejandro Falkowski