about summary refs log tree commit homepage
path: root/extras/autoindex.rb
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2013-11-11 03:31:33 +0000
committerEric Wong <e@80x24.org>2013-11-12 07:11:05 +0000
commit7dbf0de3f00d6400526f7742904d56cd5eb5629b (patch)
tree8c0c75080c50c0d7380335d09a29d0ccd83c2550 /extras/autoindex.rb
parent1d33205a7500f08c49e247af688877b0cc22cdfe (diff)
downloadyahns-7dbf0de3f00d6400526f7742904d56cd5eb5629b.tar.gz
In case we have bugs, this can help us find bugs in our code.
Diffstat (limited to 'extras/autoindex.rb')
-rw-r--r--extras/autoindex.rb9
1 files changed, 6 insertions, 3 deletions
diff --git a/extras/autoindex.rb b/extras/autoindex.rb
index b868a5c..9ce6c61 100644
--- a/extras/autoindex.rb
+++ b/extras/autoindex.rb
@@ -112,15 +112,18 @@ class Autoindex
   rescue Errno::ENOENT, Errno::ENOTDIR # from Dir.open
     r(404)
   rescue => e
-    r(500, e.message, env)
+    r(500, e, env)
   ensure
     dir.close if dir
   end
 
   def r(code, msg = nil, env = nil)
-    if env && logger = env["rack.logger"]
+    if env && exc && logger = env["rack.logger"]
+      msg = exc.message
+      msg = msg.dump if /[[:cntrl:]]/ =~ msg # prevent code injection
       logger.warn("#{env['REQUEST_METHOD']} #{env['PATH_INFO']} " \
-                  "#{code} #{msg.inspect}")
+                  "#{code} #{msg}")
+      exc.backtrace.each { |line| logger.warn(line) }
     end
 
     if Rack::Utils::STATUS_WITH_NO_ENTITY_BODY.include?(code)