diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-20 15:10:29 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-20 15:10:29 +0000 |
commit | 5fb8bb16e6ee98b1e5c7c657c0d0fe8b16e6dada (patch) | |
tree | e5e988c4e13d926827855676cc8f4b1b226ed3f8 | |
parent | 5388fb64d991db9c094d1972176c4f5794e3555f (diff) | |
download | ruby-5fb8bb16e6ee98b1e5c7c657c0d0fe8b16e6dada.tar.gz |
* lib/webrick/httpauth/htpasswd.rb: Use Tempfile.create to avoid
unintentional unlink() by the finalizer.
lib/webrick/httpauth/htdigest.rb: Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | lib/webrick/httpauth/htdigest.rb | 9 | ||||
-rw-r--r-- | lib/webrick/httpauth/htpasswd.rb | 9 |
3 files changed, 18 insertions, 6 deletions
@@ -1,3 +1,9 @@ +Sat Apr 20 23:38:14 2013 Tanaka Akira <akr@fsij.org> + + * lib/webrick/httpauth/htpasswd.rb: Use Tempfile.create to avoid + unintentional unlink() by the finalizer. + lib/webrick/httpauth/htdigest.rb: Ditto. + Sat Apr 20 22:47:48 2013 Tanaka Akira <akr@fsij.org> * lib/tempfile.rb (Tempfile.create): New method. diff --git a/lib/webrick/httpauth/htdigest.rb b/lib/webrick/httpauth/htdigest.rb index 4b74588c77..5fb0635e2a 100644 --- a/lib/webrick/httpauth/htdigest.rb +++ b/lib/webrick/httpauth/htdigest.rb @@ -70,13 +70,16 @@ module WEBrick def flush(output=nil) output ||= @path - tmp = Tempfile.new("htpasswd", File::dirname(output)) + tmp = Tempfile.create("htpasswd", File::dirname(output)) + renamed = false begin each{|item| tmp.puts(item.join(":")) } tmp.close File::rename(tmp.path, output) - rescue - tmp.close(true) + renamed = true + ensure + tmp.close if !tmp.closed? + File.unlink(tmp.path) if !renamed end end diff --git a/lib/webrick/httpauth/htpasswd.rb b/lib/webrick/httpauth/htpasswd.rb index 205a6db2f0..69b739fbfe 100644 --- a/lib/webrick/httpauth/htpasswd.rb +++ b/lib/webrick/httpauth/htpasswd.rb @@ -75,13 +75,16 @@ module WEBrick def flush(output=nil) output ||= @path - tmp = Tempfile.new("htpasswd", File::dirname(output)) + tmp = Tempfile.create("htpasswd", File::dirname(output)) + renamed = false begin each{|item| tmp.puts(item.join(":")) } tmp.close File::rename(tmp.path, output) - rescue - tmp.close(true) + renamed = true + ensure + tmp.close if !tmp.closed? + File.unlink(tmp.path) if !renamed end end |