cztop 0.11.0 → 0.11.1

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
  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