summaryrefslogtreecommitdiff
path: root/lib/cgi/session.rb
diff options
context:
space:
mode:
authorshugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-08-24 08:31:22 +0000
committershugo <shugo@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-08-24 08:31:22 +0000
commit8dfe79afce18c8265489087b2822202b2e1acc70 (patch)
tree0dbf353d9ea9290de1f88e37480226322dee3c11 /lib/cgi/session.rb
parent62276d5c1d4c6ab577f57092259d1ff98fa4e79f (diff)
* lib/cgi/session.rb (CGI::Session::FileStore#initialize): do not
use a session id as a filename. (backported from HEAD) * lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): ditto. * lib/cgi/session/pstore.rb (CGI::Session::PStore#initialize): use Dir::tmpdir. (backported from HEAD) git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/cgi/session.rb')
-rw-r--r--lib/cgi/session.rb11
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/cgi/session.rb b/lib/cgi/session.rb
index a5afb7e3e1..c320ac9c47 100644
--- a/lib/cgi/session.rb
+++ b/lib/cgi/session.rb
@@ -331,10 +331,6 @@ class CGI
# user is responsible for converting other types to Strings when
# storing and from Strings when retrieving.
class FileStore
- def check_id(id) #:nodoc:
- /[^0-9a-zA-Z]/ =~ id.to_s ? false : true
- end
-
# Create a new FileStore instance.
#
# This constructor is used internally by CGI::Session. The
@@ -361,10 +357,9 @@ class CGI
dir = option['tmpdir'] || Dir::tmpdir
prefix = option['prefix'] || ''
id = session.session_id
- unless check_id(id)
- raise ArgumentError, "session_id `%s' is invalid" % id
- end
- @path = dir+"/"+prefix+id.dup.untaint
+ require 'digest/md5'
+ md5 = Digest::MD5.hexdigest(id)[0,16]
+ @path = dir+"/"+prefix+md5
unless File::exist? @path
@hash = {}
end