Commit dd8ba669 authored by Martijn Pieters's avatar Martijn Pieters

Reverse checkin that belongs in a branch; it broke the Zope trunk.

parent 3767c663
...@@ -83,9 +83,9 @@ ...@@ -83,9 +83,9 @@
# #
############################################################################## ##############################################################################
__version__='$Revision: 1.49 $'[11:-2] __version__='$Revision: 1.50 $'[11:-2]
import re, sys, os, string, urllib, time, whrandom import regex, re, sys, os, string, urllib, time, whrandom
from string import lower, atoi, rfind, split, strip, join, upper, find from string import lower, atoi, rfind, split, strip, join, upper, find
from BaseRequest import BaseRequest from BaseRequest import BaseRequest
from HTTPResponse import HTTPResponse from HTTPResponse import HTTPResponse
...@@ -383,7 +383,7 @@ class HTTPRequest(BaseRequest): ...@@ -383,7 +383,7 @@ class HTTPRequest(BaseRequest):
hasattr=hasattr, hasattr=hasattr,
getattr=getattr, getattr=getattr,
setattr=setattr, setattr=setattr,
search_type=re.compile('(:[a-zA-Z]\w+|\.[xy])$').search, search_type=regex.compile('\(:[a-zA-Z][a-zA-Z0-9_]+\|\.[xy]\)$').search,
rfind=string.rfind, rfind=string.rfind,
): ):
"""Process request inputs """Process request inputs
...@@ -448,14 +448,11 @@ class HTTPRequest(BaseRequest): ...@@ -448,14 +448,11 @@ class HTTPRequest(BaseRequest):
# We'll search from the back to the front. # We'll search from the back to the front.
# We'll do the search in two steps. First, we'll # We'll do the search in two steps. First, we'll
# do a string search, and then we'll check it with # do a string search, and then we'll check it with
# a re search. # a regex search.
l=rfind(key,':') l=rfind(key,':')
if l >= 0: if l >= 0:
mo=search_type(key,l) l=search_type(key,l)
if mo: l = mo.start(0)
else: l = -1
while l >= 0: while l >= 0:
type_name=key[l+1:] type_name=key[l+1:]
key=key[:l] key=key[:l]
...@@ -489,9 +486,7 @@ class HTTPRequest(BaseRequest): ...@@ -489,9 +486,7 @@ class HTTPRequest(BaseRequest):
l=rfind(key,':') l=rfind(key,':')
if l < 0: break if l < 0: break
mo = search_type(key,l) l=search_type(key,l)
if mo: l = mo.start(0)
else: l = -1
# Filter out special names from form: # Filter out special names from form:
if CGI_name(key) or key[:5]=='HTTP_': continue if CGI_name(key) or key[:5]=='HTTP_': continue
...@@ -1055,10 +1050,16 @@ class FileUpload: ...@@ -1055,10 +1050,16 @@ class FileUpload:
parse_cookie_lock=allocate_lock() parse_cookie_lock=allocate_lock()
def parse_cookie(text, def parse_cookie(text,
result=None, result=None,
qparmre=re.compile( qparmre=regex.compile(
'([\x00- ]*([^\x00- ;,="]+)="([^"]*)"([\x00- ]*[;,])?[\x00- ]*)'), '\([\0- ]*'
parmre=re.compile( '\([^\0- ;,=\"]+\)="\([^"]*\)\"'
'([\x00- ]*([^\x00- ;,="]+)=([^\x00- ;,"]*)([\x00- ]*[;,])?[\x00- ]*)'), '\([\0- ]*[;,]\)?[\0- ]*\)'
),
parmre=regex.compile(
'\([\0- ]*'
'\([^\0- ;,=\"]+\)=\([^\0- ;,\"]*\)'
'\([\0- ]*[;,]\)?[\0- ]*\)'
),
acquire=parse_cookie_lock.acquire, acquire=parse_cookie_lock.acquire,
release=parse_cookie_lock.release, release=parse_cookie_lock.release,
): ):
...@@ -1068,20 +1069,16 @@ def parse_cookie(text, ...@@ -1068,20 +1069,16 @@ def parse_cookie(text,
acquire() acquire()
try: try:
if qparmre.match(text) >= 0:
mo_q = qparmre.match(text)
mo_p = parmre.match(text)
if mo_q:
# Match quoted correct cookies # Match quoted correct cookies
name = mo_q.group(2) name=qparmre.group(2)
value = mo_q.group(3) value=qparmre.group(3)
l = len(mo_q.group(1)) l=len(qparmre.group(1))
elif mo_p: elif parmre.match(text) >= 0:
# Match evil MSIE cookies ;) # Match evil MSIE cookies ;)
name = mo_p.group(2) name=parmre.group(2)
value = mo_p.group(3) value=parmre.group(3)
l = len(mo_p.group(1)) l=len(parmre.group(1))
else: else:
# this may be an invalid cookie. # this may be an invalid cookie.
# We'll simply bail without raising an error # We'll simply bail without raising an error
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment