Commit a7e27676 authored by Andreas Jung's avatar Andreas Jung

regex free

parent ff2f2e64
...@@ -83,9 +83,9 @@ ...@@ -83,9 +83,9 @@
# #
############################################################################## ##############################################################################
__version__='$Revision: 1.48 $'[11:-2] __version__='$Revision: 1.49 $'[11:-2]
import regex, re, sys, os, string, urllib, time, whrandom import 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=regex.compile('\(:[a-zA-Z][a-zA-Z0-9_]+\|\.[xy]\)$').search, search_type=re.compile('(:[a-zA-Z]\w+|\.[xy])$').search,
rfind=string.rfind, rfind=string.rfind,
): ):
"""Process request inputs """Process request inputs
...@@ -448,11 +448,14 @@ class HTTPRequest(BaseRequest): ...@@ -448,11 +448,14 @@ 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 regex search. # a re search.
l=rfind(key,':') l=rfind(key,':')
if l >= 0: if l >= 0:
l=search_type(key,l) mo=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]
...@@ -486,7 +489,9 @@ class HTTPRequest(BaseRequest): ...@@ -486,7 +489,9 @@ class HTTPRequest(BaseRequest):
l=rfind(key,':') l=rfind(key,':')
if l < 0: break if l < 0: break
l=search_type(key,l) mo = 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
...@@ -1050,16 +1055,10 @@ class FileUpload: ...@@ -1050,16 +1055,10 @@ 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=regex.compile( qparmre=re.compile(
'\([\0- ]*' '([\x00- ]*([^\x00- ;,="]+)="([^"]*)"([\x00- ]*[;,])?[\x00- ]*)'),
'\([^\0- ;,=\"]+\)="\([^"]*\)\"' parmre=re.compile(
'\([\0- ]*[;,]\)?[\0- ]*\)' '([\x00- ]*([^\x00- ;,="]+)=([^\x00- ;,"]*)([\x00- ]*[;,])?[\x00- ]*)'),
),
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,
): ):
...@@ -1069,16 +1068,20 @@ def parse_cookie(text, ...@@ -1069,16 +1068,20 @@ 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=qparmre.group(2) name = mo_q.group(2)
value=qparmre.group(3) value = mo_q.group(3)
l=len(qparmre.group(1)) l = len(mo_q.group(1))
elif parmre.match(text) >= 0: elif mo_p:
# Match evil MSIE cookies ;) # Match evil MSIE cookies ;)
name=parmre.group(2) name = mo_p.group(2)
value=parmre.group(3) value = mo_p.group(3)
l=len(parmre.group(1)) l = len(mo_p.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