[CalendarServer-changes] [2510] CalendarServer/trunk/lib-patches/Twisted/twisted.web2.auth.digest. patch

source_changes at macosforge.org source_changes at macosforge.org
Wed May 28 07:48:18 PDT 2008


Revision: 2510
          http://trac.macosforge.org/projects/calendarserver/changeset/2510
Author:   cdaboo at apple.com
Date:     2008-05-28 07:48:12 -0700 (Wed, 28 May 2008)

Log Message:
-----------
Properly parse the digest response line.

Added Paths:
-----------
    CalendarServer/trunk/lib-patches/Twisted/twisted.web2.auth.digest.patch

Added: CalendarServer/trunk/lib-patches/Twisted/twisted.web2.auth.digest.patch
===================================================================
--- CalendarServer/trunk/lib-patches/Twisted/twisted.web2.auth.digest.patch	                        (rev 0)
+++ CalendarServer/trunk/lib-patches/Twisted/twisted.web2.auth.digest.patch	2008-05-28 14:48:12 UTC (rev 2510)
@@ -0,0 +1,40 @@
+Index: twisted/web2/auth/digest.py
+===================================================================
+--- twisted/web2/auth/digest.py	(revision 19773)
++++ twisted/web2/auth/digest.py	(working copy)
+@@ -11,6 +11,10 @@
+ from zope.interface import implements, Interface
+ 
+ from twisted.web2.auth.interfaces import ICredentialFactory
++from twisted.web2.http_headers import tokenize
++from twisted.web2.http_headers import Token
++from twisted.web2.http_headers import split
++from twisted.web2.http_headers import parseKeyValue
+ 
+ import md5, sha
+ import random, sys
+@@ -320,13 +324,17 @@
+                 return s[1:-1]
+             return s
+         response = ' '.join(response.splitlines())
+-        parts = response.split(',')
+-
+-        auth = {}
+-
+-        for (k, v) in [p.split('=', 1) for p in parts]:
+-            auth[k.strip()] = unq(v.strip())
+-
++        
++        try:
++            parts = split(tokenize((response,), foldCase=False), Token(","))
++    
++            auth = {}
++    
++            for (k, v) in [parseKeyValue(p) for p in parts]:
++                auth[k.strip()] = unq(v.strip())
++        except ValueError:
++            raise error.LoginFailed('Invalid response.')
++            
+         username = auth.get('username')
+         if not username:
+             raise error.LoginFailed('Invalid response, no username given.')

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080528/eb1bfa72/attachment.htm 


More information about the calendarserver-changes mailing list