firebug 1.1.0 → 1.2.0

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
- SHA1:
3
- metadata.gz: c7ae866f5a57fc4cd5782c1d42232a83b473541e
4
- data.tar.gz: ea21d35182344dedc599830d373177714098963e
2
+ SHA256:
3
+ metadata.gz: 8fbd5a9dfb24f6bda1c0a1f14541a19874ce2ba4947dfe9942968df5d95ce612
4
+ data.tar.gz: 20cba9c06d691fdc45f397d458b638b5313f6fedf445ef42ef1f805df9cd8751
5
5
  SHA512:
6
- metadata.gz: 543016ca23566df1e2e76790e0c85688a30102851df90f137f19bbbed502141e1308576613768292d56c468bfd5bfbf6bb1abdd2d3d5a4a4b1f65642071ab6ca
7
- data.tar.gz: b5776e9dbc85cb9f3b7e35984c4a2047fcc9b2484b467c100c2f48898671b4e57f256f054cee3bf3f8a3a927901bc78da98145d12ef7a254c6ffcb2e09235c1b
6
+ metadata.gz: b055339ae79941d211791a4248fbdf88a3a1190ef214abb7e8e5d2d846e6075b662f104ee2e888f56302229146176d65fc658cd2944c6df8b24d0d0791b1d022
7
+ data.tar.gz: d3dec6a39184d14ab579e1c286cd792100943b8e58a52a89b4237b3d6e0482653886840de227035b0feaf3019b38a81b1deb9cfba9a042ffe5eb1aeb0d8b362f
@@ -6,7 +6,7 @@ workspace_root: &workspace_root
6
6
  defaults: &defaults
7
7
  working_directory: *workspace_root
8
8
  docker:
9
- - image: afrase/firebug-ruby:2.4
9
+ - image: afrase/firebug-ruby:2.6
10
10
 
11
11
  attach_workspace: &attach_workspace
12
12
  attach_workspace:
@@ -42,6 +42,7 @@ jobs:
42
42
  - run:
43
43
  name: Install Bundler dependencies
44
44
  command: |
45
+ gem install bundler
45
46
  bin/bundle install --path=vendor/bundle \
46
47
  --jobs=4 \
47
48
  --retry=3
@@ -62,7 +63,9 @@ jobs:
62
63
  - *attach_workspace
63
64
  - run:
64
65
  name: Set bundler path
65
- command: bin/bundle --path vendor/bundle
66
+ command: |
67
+ gem install bundler
68
+ bin/bundle --path vendor/bundle
66
69
  - run:
67
70
  name: Run tests
68
71
  command: |
@@ -87,7 +90,9 @@ jobs:
87
90
  - *attach_workspace
88
91
  - run:
89
92
  name: Set bundler path
90
- command: bin/bundle --path vendor/bundle
93
+ command: |
94
+ gem install bundler
95
+ bin/bundle --path vendor/bundle
91
96
  - run:
92
97
  name: Run rubocop
93
98
  command: bin/bundle exec rubocop
@@ -1,3 +1,12 @@
1
- FROM circleci/ruby:2.4
1
+ FROM ruby:2.6-slim
2
2
 
3
- RUN sudo apt-get update && sudo apt-get install mcrypt libmcrypt-dev
3
+ RUN apt-get update && apt-get install -y --no-install-recommends \
4
+ build-essential \
5
+ curl \
6
+ default-libmysqlclient-dev \
7
+ git \
8
+ libmcrypt-dev \
9
+ file \
10
+ sudo \
11
+ libsqlite3-dev \
12
+ && rm -rf /var/lib/apt/lists/*
@@ -1 +1 @@
1
- ruby-2.4.1
1
+ ruby-2.6.1
data/README.md CHANGED
@@ -63,8 +63,8 @@ Encrypt and decrypt data.
63
63
  key = 'password'
64
64
  data = 'super secret data'
65
65
 
66
- encrypted = Firebug.encrypt(key, data)
67
- decrypted = Firebug.decrypt(key, encrypted)
66
+ encrypted = Firebug.encrypt(data, key)
67
+ decrypted = Firebug.decrypt(encrypted, key)
68
68
 
69
69
  data == decrypted # => true
70
70
  ```
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'firebug/version'
6
6
 
@@ -24,19 +24,19 @@ Gem::Specification.new do |spec| # rubocop:disable BlockLength
24
24
 
25
25
  spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
26
26
 
27
- spec.add_dependency 'actionpack', '~> 5.0'
28
- spec.add_dependency 'activerecord', '~> 5.0'
27
+ spec.add_dependency 'actionpack', '<= 6.0'
28
+ spec.add_dependency 'activerecord', '<= 6.0'
29
29
  spec.add_dependency 'ruby-mcrypt', '~> 0.2'
30
30
 
31
- spec.add_development_dependency 'bundler', '~> 1.15'
32
- spec.add_development_dependency 'database_cleaner', '~> 1.6', '>= 1.6.2'
33
- spec.add_development_dependency 'pry', '~> 0.11.3'
34
- spec.add_development_dependency 'rake', '~> 12.3'
35
- spec.add_development_dependency 'rspec', '~> 3.7'
36
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3.0'
37
- spec.add_development_dependency 'rubocop', '~> 0.52.1'
38
- spec.add_development_dependency 'rubocop-rspec', '~> 1.22', '>= 1.22.2'
39
- spec.add_development_dependency 'simplecov', '~> 0.15.1'
40
- spec.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.13'
41
- spec.add_development_dependency 'yard', '~> 0.9.12'
31
+ spec.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.1'
32
+ spec.add_development_dependency 'database_cleaner', '~> 1.7'
33
+ spec.add_development_dependency 'pry', '~> 0.12.2'
34
+ spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.2'
35
+ spec.add_development_dependency 'rspec', '~> 3.8'
36
+ spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
37
+ spec.add_development_dependency 'rubocop', '~> 0.66.0'
38
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.32'
39
+ spec.add_development_dependency 'simplecov', '~> 0.16.1'
40
+ spec.add_development_dependency 'sqlite3', '~> 1.3.6'
41
+ spec.add_development_dependency 'yard', '~> 0.9.18'
42
42
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'action_dispatch'
4
- require_relative '../../firebug/session'
5
-
6
3
  module ActionDispatch
7
4
  module Session
5
+ require 'action_dispatch'
6
+ require_relative '../../firebug/session'
7
+
8
8
  # A session store for Rails to handle Pyro sessions.
9
9
  class CodeIgniterStore < AbstractStore
10
10
  SESSION_RECORD_KEY = 'rack.session.record'
@@ -78,6 +78,7 @@ module ActionDispatch
78
78
  }
79
79
  # Returning false will cause Rack to output a warning.
80
80
  return false unless model.update(model_params)
81
+
81
82
  req.env[SESSION_RECORD_KEY] = model
82
83
  # Return the encrypted cookie format of the data. Rack sets this value as the cookie in the response
83
84
  model.cookie_data
@@ -99,6 +100,7 @@ module ActionDispatch
99
100
  # Get the current database record for this session then delete it.
100
101
  find_session_model(req, sid).delete
101
102
  return if options[:drop]
103
+
102
104
  req.env[SESSION_RECORD_KEY] = nil
103
105
  # Generate a new one and return it's ID
104
106
  find_session_model(req).tap { |s| s.save if options[:renew] }.session_id
@@ -119,6 +121,7 @@ module ActionDispatch
119
121
  return generate_sid if sid.nil?
120
122
  # sometimes the cookie contains just the session ID.
121
123
  return sid if sid.size <= 32
124
+
122
125
  Firebug.decrypt_cookie(sid)[:session_id]
123
126
  end
124
127
 
@@ -129,6 +132,7 @@ module ActionDispatch
129
132
  if sid
130
133
  model = req.env[SESSION_RECORD_KEY] || Firebug::Session.find_by(find_by_params(req, sid))
131
134
  return model if model
135
+
132
136
  # use a different session ID in case the reason for not finding the record is because the user_agent
133
137
  # or ip_address didn't match.
134
138
  sid = generate_sid
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative 'firebug/version'
4
4
  require_relative 'firebug/crypto'
5
+ require_relative 'firebug/errors'
5
6
  require_relative 'firebug/serializer'
6
7
  require_relative 'firebug/unserializer'
7
8
  require_relative 'firebug/configuration'
@@ -20,7 +20,7 @@ module Firebug
20
20
  # Create a random 32 byte string to act as the initialization vector.
21
21
  iv = SecureRandom.random_bytes(32)
22
22
  # Pyro pads the data with zeros
23
- cipher = Mcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
23
+ cipher = FirebugMcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
24
24
  add_noise(iv + cipher.encrypt(data))
25
25
  end
26
26
 
@@ -32,7 +32,7 @@ module Firebug
32
32
  data = remove_noise(data)
33
33
  # The first 32 bytes of the data is the original IV
34
34
  iv = data[0..31]
35
- cipher = Mcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
35
+ cipher = FirebugMcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
36
36
  cipher.decrypt(data[32..-1])
37
37
  end
38
38
 
@@ -64,4 +64,14 @@ module Firebug
64
64
  Array.new(data.size) { |i| (data[i].ord.send(operator, key[i % key.size].ord) % 256).chr }.join
65
65
  end
66
66
  end
67
+
68
+ # To prevent errors about @opened being uninitialized.
69
+ class FirebugMcrypt < ::Mcrypt
70
+ # rubocop:disable Naming/UncommunicativeMethodParamName
71
+ def initialize(algorithm, mode, key=nil, iv=nil, padding=nil)
72
+ @opened = nil
73
+ super
74
+ end
75
+ # rubocop:enable Naming/UncommunicativeMethodParamName
76
+ end
67
77
  end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Firebug
4
+ FirebugError = Class.new(StandardError)
5
+ ParserError = Class.new(FirebugError)
6
+ end
@@ -23,9 +23,9 @@ module Firebug
23
23
  when String, Symbol
24
24
  "s:#{obj.to_s.bytesize}:\"#{obj}\";"
25
25
  when Array
26
- "a:#{obj.length}:{#{obj.collect.with_index { |e, i| "#{parse(i)}#{parse(e)}" }.join}}"
26
+ "a:#{obj.length}:{#{obj.map.with_index { |e, i| "#{parse(i)}#{parse(e)}" }.join}}"
27
27
  when Hash
28
- "a:#{obj.length}:{#{obj.collect { |k, v| "#{parse(k)}#{parse(v)}" }.join}}"
28
+ "a:#{obj.length}:{#{obj.map { |k, v| "#{parse(k)}#{parse(v)}" }.join}}"
29
29
  else
30
30
  raise ArgumentError, "unsupported type #{obj.class.name}"
31
31
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Firebug
4
+ class StringIOReader < StringIO
5
+ # Reads data from the buffer until +char+ is found.
6
+ #
7
+ # @param [String] char The character to look for.
8
+ # @param [Boolean] include If +char+ should be included in the result.
9
+ # @return [String, nil]
10
+ def read_until(char, include: true)
11
+ if (idx = string.index(char, pos)) # rubocop:disable Style/GuardClause
12
+ read(idx - pos + (include ? 1 : 0))
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,17 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Firebug
4
- require 'strscan'
4
+ require_relative 'errors'
5
+ require_relative 'string_io_reader'
5
6
 
6
7
  # This class will unserialize a PHP serialized string into a ruby object.
7
8
  #
8
- # @attr [StringScanner] str
9
+ # @attr [StringIOReader] str
9
10
  class Unserializer
10
11
  attr_accessor :str
11
12
 
12
13
  # @param [String] string
13
14
  def initialize(string)
14
- self.str = StringScanner.new(string)
15
+ self.str = StringIOReader.new(string)
15
16
  end
16
17
 
17
18
  # Convenience method for unserializing a PHP serialized string.
@@ -30,23 +31,24 @@ module Firebug
30
31
  #
31
32
  # @raise [ParserError]
32
33
  # @return [Hash, Array, String, Integer, Float, nil]
33
- def parse # rubocop:disable AbcSize,CyclomaticComplexity
34
- ch = str.getch
34
+ def parse # rubocop:disable CyclomaticComplexity
35
+ ch = str.getc
35
36
  return if ch.nil?
36
37
 
38
+ str.getc # : or ;
37
39
  case ch
38
40
  when 'a'
39
- parse_enumerable.tap { expect('}') }
41
+ parse_enumerable
40
42
  when 's'
41
- parse_string.tap { expect(';') }
43
+ parse_string
42
44
  when 'i'
43
- parse_int.tap { expect(';') }
45
+ parse_int
44
46
  when 'd'
45
- parse_double.tap { expect(';') }
47
+ parse_double
46
48
  when 'b'
47
- parse_bool.tap { expect(';') }
49
+ parse_bool
48
50
  when 'N'
49
- expect(';')
51
+ nil
50
52
  else
51
53
  raise ParserError, "Unknown token '#{ch}' at position #{str.pos} (#{str.string})"
52
54
  end
@@ -57,63 +59,41 @@ module Firebug
57
59
  # @raise [ParseError]
58
60
  # @return [Hash, Array]
59
61
  def parse_enumerable
60
- size = parse_int
61
- expect('{')
62
+ size = str.read_until('{')[0..-3].to_i # n:{
62
63
  return {} if size.zero?
63
- if str.peek(1) == 'i'
64
- # Multiply the size by 2 since the array index isn't counted in the size.
65
- # Odd number element will be the index value so drop it.
66
- Array.new(size * 2) { parse }.select.with_index { |_, i| i.odd? }
64
+
65
+ val = Array.new(size) { [parse, parse] }
66
+ str.getc # }
67
+ if val[0][0].is_a?(Integer)
68
+ val.map! { |_, v| v }
67
69
  else
68
- Array.new(size) { [parse.to_sym, parse] }.to_h
70
+ val = Hash[val].transform_keys!(&:to_sym)
69
71
  end
72
+ val
70
73
  end
71
74
 
72
75
  # @return [String]
73
76
  def parse_string
74
- size = parse_int
75
- str.getch # consume quote '"'
76
- read(size).tap { str.getch }
77
+ size = str.read_until(':').to_i + 3 # add 3 for the 2 double quotes and semicolon
78
+ String.new(str.read(size)[1..-3], encoding: Encoding::UTF_8)
77
79
  end
78
80
 
79
81
  # @raise [ParserError]
80
82
  # @return [Integer]
81
83
  def parse_int
82
- str.scan(/:(\d+):?/)
83
- raise ParserError, "Failed to parse integer at position #{str.pos}" unless str.matched?
84
- str[1].to_i
84
+ str.read_until(';')[0..-1].to_i
85
85
  end
86
86
 
87
87
  # @raise [ParserError]
88
88
  # @return [Float]
89
89
  def parse_double
90
- str.scan(/:(\d+(?:\.\d+)?)/)
91
- raise ParserError, "Failed to parse double at position #{str.pos}" unless str.matched?
92
- str[1].to_f
90
+ str.read_until(';')[0..-1].to_f
93
91
  end
94
92
 
95
93
  # @raise [ParserError]
96
94
  # @return [Boolean]
97
95
  def parse_bool
98
- str.scan(/:([01])/)
99
- raise ParserError, "Failed to parse boolean at position #{str.pos}" unless str.matched?
100
- str[1] == '1'
101
- end
102
-
103
- # @param [Integer] size
104
- # @return [String]
105
- def read(size)
106
- Array.new(size) { str.get_byte }.join
96
+ str.read(2)[0] == '1'
107
97
  end
108
-
109
- # @param [String] s
110
- # @raise [ParserError] if the next character is not `s`
111
- def expect(s)
112
- char = str.getch
113
- raise ParserError, "expected '#{s}' but got '#{char}' at position #{str.pos}" unless char == s
114
- end
115
- end
116
-
117
- class ParserError < StandardError
118
98
  end
119
99
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Firebug
4
4
  # The current version of Firebug
5
- VERSION = '1.1.0'
5
+ VERSION = '1.2.0'
6
6
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firebug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Frase
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-19 00:00:00.000000000 Z
11
+ date: 2019-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - "<="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - "<="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - "<="
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '6.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - "<="
39
39
  - !ruby/object:Gem::Version
40
- version: '5.0'
40
+ version: '6.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ruby-mcrypt
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,48 +58,48 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.15'
61
+ version: '2.0'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 2.0.1
62
65
  type: :development
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
69
  - - "~>"
67
70
  - !ruby/object:Gem::Version
68
- version: '1.15'
71
+ version: '2.0'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 2.0.1
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: database_cleaner
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: '1.6'
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 1.6.2
81
+ version: '1.7'
79
82
  type: :development
80
83
  prerelease: false
81
84
  version_requirements: !ruby/object:Gem::Requirement
82
85
  requirements:
83
86
  - - "~>"
84
87
  - !ruby/object:Gem::Version
85
- version: '1.6'
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 1.6.2
88
+ version: '1.7'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: pry
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 0.11.3
95
+ version: 0.12.2
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 0.11.3
102
+ version: 0.12.2
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rake
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +107,9 @@ dependencies:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '12.3'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 12.3.2
110
113
  type: :development
111
114
  prerelease: false
112
115
  version_requirements: !ruby/object:Gem::Requirement
@@ -114,116 +117,107 @@ dependencies:
114
117
  - - "~>"
115
118
  - !ruby/object:Gem::Version
116
119
  version: '12.3'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 12.3.2
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: rspec
119
125
  requirement: !ruby/object:Gem::Requirement
120
126
  requirements:
121
127
  - - "~>"
122
128
  - !ruby/object:Gem::Version
123
- version: '3.7'
129
+ version: '3.8'
124
130
  type: :development
125
131
  prerelease: false
126
132
  version_requirements: !ruby/object:Gem::Requirement
127
133
  requirements:
128
134
  - - "~>"
129
135
  - !ruby/object:Gem::Version
130
- version: '3.7'
136
+ version: '3.8'
131
137
  - !ruby/object:Gem::Dependency
132
138
  name: rspec_junit_formatter
133
139
  requirement: !ruby/object:Gem::Requirement
134
140
  requirements:
135
141
  - - "~>"
136
142
  - !ruby/object:Gem::Version
137
- version: 0.3.0
143
+ version: 0.4.1
138
144
  type: :development
139
145
  prerelease: false
140
146
  version_requirements: !ruby/object:Gem::Requirement
141
147
  requirements:
142
148
  - - "~>"
143
149
  - !ruby/object:Gem::Version
144
- version: 0.3.0
150
+ version: 0.4.1
145
151
  - !ruby/object:Gem::Dependency
146
152
  name: rubocop
147
153
  requirement: !ruby/object:Gem::Requirement
148
154
  requirements:
149
155
  - - "~>"
150
156
  - !ruby/object:Gem::Version
151
- version: 0.52.1
157
+ version: 0.66.0
152
158
  type: :development
153
159
  prerelease: false
154
160
  version_requirements: !ruby/object:Gem::Requirement
155
161
  requirements:
156
162
  - - "~>"
157
163
  - !ruby/object:Gem::Version
158
- version: 0.52.1
164
+ version: 0.66.0
159
165
  - !ruby/object:Gem::Dependency
160
166
  name: rubocop-rspec
161
167
  requirement: !ruby/object:Gem::Requirement
162
168
  requirements:
163
169
  - - "~>"
164
170
  - !ruby/object:Gem::Version
165
- version: '1.22'
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- version: 1.22.2
171
+ version: '1.32'
169
172
  type: :development
170
173
  prerelease: false
171
174
  version_requirements: !ruby/object:Gem::Requirement
172
175
  requirements:
173
176
  - - "~>"
174
177
  - !ruby/object:Gem::Version
175
- version: '1.22'
176
- - - ">="
177
- - !ruby/object:Gem::Version
178
- version: 1.22.2
178
+ version: '1.32'
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: simplecov
181
181
  requirement: !ruby/object:Gem::Requirement
182
182
  requirements:
183
183
  - - "~>"
184
184
  - !ruby/object:Gem::Version
185
- version: 0.15.1
185
+ version: 0.16.1
186
186
  type: :development
187
187
  prerelease: false
188
188
  version_requirements: !ruby/object:Gem::Requirement
189
189
  requirements:
190
190
  - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: 0.15.1
192
+ version: 0.16.1
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: sqlite3
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: '1.3'
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: 1.3.13
199
+ version: 1.3.6
203
200
  type: :development
204
201
  prerelease: false
205
202
  version_requirements: !ruby/object:Gem::Requirement
206
203
  requirements:
207
204
  - - "~>"
208
205
  - !ruby/object:Gem::Version
209
- version: '1.3'
210
- - - ">="
211
- - !ruby/object:Gem::Version
212
- version: 1.3.13
206
+ version: 1.3.6
213
207
  - !ruby/object:Gem::Dependency
214
208
  name: yard
215
209
  requirement: !ruby/object:Gem::Requirement
216
210
  requirements:
217
211
  - - "~>"
218
212
  - !ruby/object:Gem::Version
219
- version: 0.9.12
213
+ version: 0.9.18
220
214
  type: :development
221
215
  prerelease: false
222
216
  version_requirements: !ruby/object:Gem::Requirement
223
217
  requirements:
224
218
  - - "~>"
225
219
  - !ruby/object:Gem::Version
226
- version: 0.9.12
220
+ version: 0.9.18
227
221
  description: Gem for working with CodeIgniter sessions
228
222
  email:
229
223
  - aaron@rvshare.com
@@ -253,8 +247,10 @@ files:
253
247
  - lib/firebug.rb
254
248
  - lib/firebug/configuration.rb
255
249
  - lib/firebug/crypto.rb
250
+ - lib/firebug/errors.rb
256
251
  - lib/firebug/serializer.rb
257
252
  - lib/firebug/session.rb
253
+ - lib/firebug/string_io_reader.rb
258
254
  - lib/firebug/unserializer.rb
259
255
  - lib/firebug/version.rb
260
256
  homepage: https://github.com/rvshare/firebug
@@ -277,8 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
273
  - !ruby/object:Gem::Version
278
274
  version: '0'
279
275
  requirements: []
280
- rubyforge_project:
281
- rubygems_version: 2.6.12
276
+ rubygems_version: 3.0.1
282
277
  signing_key:
283
278
  specification_version: 4
284
279
  summary: Gem for working with CodeIgniter sessions