Commit 2da66285 authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

Fixed #8310 -- Actually use the SystemRandom RNG, if available, which fixes an

oversight from [8340]. The previous code worked, but this is what I really
intended.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@8346 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 4adf048a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -15,9 +15,9 @@ from django.utils.hashcompat import md5_constructor

# Use the system (hardware-based) random number generator if it exists.
if hasattr(random, 'SystemRandom'):
    randint = random.SystemRandom().randint
    randrange = random.SystemRandom().randrange
else:
    randint = random.randint
    randrange = random.randrange
MAX_SESSION_KEY = 18446744073709551616L     # 2 << 63

class CreateError(Exception):
@@ -135,7 +135,7 @@ class SessionBase(object):
            pid = 1
        while 1:
            session_key = md5_constructor("%s%s%s%s"
                    % (random.randrange(0, MAX_SESSION_KEY), pid, time.time(),
                    % (randrange(0, MAX_SESSION_KEY), pid, time.time(),
                       settings.SECRET_KEY)).hexdigest()
            if not self.exists(session_key):
                break