cztop 0.11.0 → 0.11.1

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
  SHA1:
3
- metadata.gz: c4906ff9fd7c2ebd3fb3b33eadcab389799649ff
4
- data.tar.gz: 0332b4b9a1fed07870e459298ca43fb82223acd8
3
+ metadata.gz: 8f1316481428acef63d4abeb76be289cd66c68b8
4
+ data.tar.gz: af1ab69820e817b6610d5aa776974c89d492e3d4
5
5
  SHA512:
6
- metadata.gz: 8727db3d61b640eb5a2e0611086d180f6515418d7fd4ecebd6ff6fd76e15f82fb10116e2420121c4dc8279bf11b426604228971d03d646f244d8886735475db7
7
- data.tar.gz: 838b219829c9df9f8fc04081d3e262360bda1cf02f5c5d7e8881c2593e4aa7921a1ecaea54fd0e344a091d0cc5e1338267375ab6758ab1eb60b652fc4db2bfd5
6
+ metadata.gz: cfab10569af81b300ba07b378daddab55ff32445b4002af600c8dbe44e6c79908f740f53a5c20f09dac6db477c32a7486e66237d503741b04c8d03045264e8aa
7
+ data.tar.gz: d8160d639ede7013d1163c7ca770fbfa1a2fa7ef985c3b8cb5a6b1ca8ffea012e78e27223ddf2a85b0ccda03f18dc85734c3fd039e64a41e97bb80296d69789b
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ 0.11.1 (11/16/2016)
2
+ -----
3
+ * Metadata.load: check for incomplete property names and values
4
+
1
5
  0.11.0 (11/06/2016)
2
6
  -----
3
7
  * upgrade to czmq-ffi-gen's 0.12.x line (which includes the CZMQ v4.0.0 release)
data/Guardfile CHANGED
@@ -28,7 +28,7 @@ group :spec do
28
28
  watch(rspec.spec_files)
29
29
  spec_files = rspec.spec_files
30
30
 
31
- # # Ruby files
31
+ # Ruby files
32
32
  ruby = dsl.ruby
33
33
  watch(ruby.lib_files) { |m| rspec.spec.(m[1]) }
34
34
  ruby_lib_files = ruby.lib_files
@@ -22,6 +22,8 @@ module CZTop
22
22
 
23
23
 
24
24
  # @param metadata [Hash<Symbol, #to_s>]
25
+ # @raise [ArgumentError] when properties have an invalid, too long, or
26
+ # duplicated name, or when a value is too long
25
27
  # @return [String]
26
28
  def self.dump(metadata)
27
29
  ic_names = Set.new
@@ -44,24 +46,31 @@ module CZTop
44
46
  end.join
45
47
  end
46
48
 
47
- # @param string [String, Frame, #to_s]
49
+ # @param data [String, Frame, #to_s] the data representing the metadata
48
50
  # @return [Hash]
49
- def self.load(string)
51
+ def self.load(data)
50
52
  properties = {}
51
- io = StringIO.new(string)
52
- until io.eof?
53
- # check for zero length names
54
- name_length = io.read(1).unpack("C").first
53
+ consumed = 0
54
+ while consumed < data.bytesize # while there are bytes to read
55
+ # read property name
56
+ name_length = data.byteslice(consumed).unpack("C").first # never nil
55
57
  raise InvalidData, "zero-length property name" if name_length.zero?
56
- name = io.read(name_length)
58
+ name = data.byteslice(consumed + 1, name_length)
59
+ raise InvalidData, "incomplete name" if name.bytesize != name_length
57
60
  name_sym = name.to_sym.downcase
58
61
  if properties.has_key?(name_sym)
59
62
  raise InvalidData, "property #{name.inspect}: duplicate name"
60
63
  end
64
+ consumed += 1 + name.bytesize
61
65
 
62
- value_length = io.read(4).unpack("N").first
63
- value = io.read(value_length)
66
+ # read property value
67
+ value_length = data.byteslice(consumed, 4).unpack("N").first or
68
+ raise InvalidData, "incomplete length"
69
+ value = data.byteslice(consumed + 4, value_length)
70
+ raise InvalidData, "incomplete value" if value.bytesize != value_length
71
+ consumed += 4 + value.bytesize
64
72
 
73
+ # remember
65
74
  properties[name_sym] = value
66
75
  end
67
76
  new(properties)
@@ -1,3 +1,3 @@
1
1
  module CZTop
2
- VERSION = "0.11.0"
2
+ VERSION = "0.11.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cztop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrik Wenger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-06 00:00:00.000000000 Z
11
+ date: 2016-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: czmq-ffi-gen