clogger 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/GIT-VERSION-GEN CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
3
  GVF=GIT-VERSION-FILE
4
- DEF_VER=v1.0.1.GIT
4
+ DEF_VER=v1.1.0.GIT
5
5
 
6
6
  LF='
7
7
  '
data/README CHANGED
@@ -114,7 +114,7 @@ development. Patches should always be sent inline
114
114
  All feedback (bug reports, user/development discussion, patches, pull
115
115
  requests) go to the mailing list.
116
116
 
117
- * mailto:clogger@librelist.com
117
+ * mailto:clogger@librelist.org
118
118
 
119
119
  Do not send HTML mail or attachments. Do not top post.
120
120
 
data/clogger.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.authors = ["cloggers"]
12
12
  s.date = Time.now.utc.strftime('%Y-%m-%d')
13
13
  s.description = readme_description
14
- s.email = %q{clogger@librelist.com}
14
+ s.email = %q{clogger@librelist.org}
15
15
  s.extra_rdoc_files = extra_rdoc_files(manifest)
16
16
  s.files = manifest
17
17
  s.rdoc_options = rdoc_options
@@ -161,7 +161,7 @@ static void init_buffers(struct clogger *c)
161
161
  static inline int need_escape(unsigned c)
162
162
  {
163
163
  assert(c <= 0xff);
164
- return !!(c == '\'' || c == '"' || c <= 0x1f);
164
+ return !!(c == '\'' || c == '"' || c <= 0x1f || c >= 0x7f);
165
165
  }
166
166
 
167
167
  /* we are encoding-agnostic, clients can send us all sorts of junk */
@@ -572,8 +572,7 @@ static void append_cookie(struct clogger *c, VALUE key)
572
572
  cookie = g_dash;
573
573
  } else {
574
574
  cookie = rb_hash_aref(c->cookies, key);
575
- if (NIL_P(cookie))
576
- cookie = g_dash;
575
+ cookie = NIL_P(cookie) ? g_dash : byte_xs(cookie);
577
576
  }
578
577
  rb_str_buf_append(c->log_buf, cookie);
579
578
  }
@@ -890,10 +889,12 @@ static VALUE clogger_call(VALUE self, VALUE env)
890
889
  env = rb_check_convert_type(env, T_HASH, "Hash", "to_hash");
891
890
 
892
891
  if (c->wrap_body) {
892
+ /* XXX: we assume the existence of the GVL here: */
893
893
  if (c->reentrant < 0) {
894
894
  VALUE tmp = rb_hash_aref(env, g_rack_multithread);
895
895
  c->reentrant = Qfalse == tmp ? 0 : 1;
896
896
  }
897
+
897
898
  if (c->reentrant) {
898
899
  self = rb_obj_dup(self);
899
900
  c = clogger_get(self);
data/lib/clogger/pure.rb CHANGED
@@ -98,7 +98,9 @@ private
98
98
  def byte_xs(s)
99
99
  s = s.dup
100
100
  s.force_encoding(Encoding::BINARY) if defined?(Encoding::BINARY)
101
- s.gsub!(/(['"\x00-\x1f])/) { |x| "\\x#{$1.unpack('H2').first.upcase}" }
101
+ s.gsub!(/(['"\x00-\x1f\x7f-\xff])/) do |x|
102
+ "\\x#{$1.unpack('H2').first.upcase}"
103
+ end
102
104
  s
103
105
  end
104
106
 
@@ -175,7 +177,7 @@ private
175
177
  t = Time.now
176
178
  time_format(t.to_i, t.usec, op[1], op[2])
177
179
  when OP_COOKIE
178
- (env['rack.request.cookie_hash'][op[1]] rescue "-") || "-"
180
+ (byte_xs(env['rack.request.cookie_hash'][op[1]]) rescue "-") || "-"
179
181
  else
180
182
  raise "EDOOFUS #{op.inspect}"
181
183
  end
data/test/test_clogger.rb CHANGED
@@ -390,6 +390,15 @@ class TestClogger < Test::Unit::TestCase
390
390
  assert_equal "a\\x0Ab\n", str.string
391
391
  end
392
392
 
393
+ def test_escape_crazy_delete
394
+ str = StringIO.new
395
+ app = lambda { |env| [302, {}, [] ] }
396
+ cl = Clogger.new(app, :logger => str, :format => "$http_cookie")
397
+ @req["HTTP_COOKIE"] = "a\x7f\xff"
398
+ cl.call(@req)
399
+ assert_equal "a\\x7F\\xFF\n", str.string
400
+ end
401
+
393
402
  def test_request_uri_fallback
394
403
  str = StringIO.new
395
404
  app = lambda { |env| [ 200, {}, [] ] }
@@ -415,9 +424,9 @@ class TestClogger < Test::Unit::TestCase
415
424
  cl = Clogger.new(app,
416
425
  :format => '$cookie_foo $cookie_quux',
417
426
  :logger => str)
418
- req = @req.merge('HTTP_COOKIE' => "foo=bar;quux=h&m")
427
+ req = @req.merge('HTTP_COOKIE' => "foo=bar;quux=h%7F&m")
419
428
  status, headers, body = cl.call(req)
420
- assert_equal "bar h&m\n", str.string
429
+ assert_equal "bar h\\x7F&m\n", str.string
421
430
  end
422
431
 
423
432
  def test_bogus_app_response
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clogger
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 0
9
8
  - 1
10
- version: 1.0.1
9
+ - 0
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - cloggers
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-22 00:00:00 Z
18
+ date: 2011-12-06 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rack
@@ -50,7 +50,7 @@ dependencies:
50
50
  description: |-
51
51
  \Clogger is Rack middleware for logging HTTP requests. The log format
52
52
  is customizable so you can specify exactly which fields to log.
53
- email: clogger@librelist.com
53
+ email: clogger@librelist.org
54
54
  executables: []
55
55
 
56
56
  extensions:
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  requirements: []
127
127
 
128
128
  rubyforge_project: clogger
129
- rubygems_version: 1.8.5
129
+ rubygems_version: 1.8.11
130
130
  signing_key:
131
131
  specification_version: 3
132
132
  summary: configurable request logging for Rack