2424from extra .safe2bin .safe2bin import safecharencode
2525from extra .safe2bin .safe2bin import safechardecode
2626from lib .core .data import conf
27+ from lib .core .data import kb
2728from lib .core .data import logger
2829from lib .core .enums import PLACE
2930from lib .core .settings import UNICODE_ENCODING
@@ -89,7 +90,7 @@ def urldecode(value, encoding=None):
8990
9091 return result
9192
92- def urlencode (value , safe = "%&=" , convall = False , limit = False , failsafe = True ):
93+ def urlencode (value , safe = "%&=" , convall = False , limit = False ):
9394 if conf .direct or PLACE .SOAP in conf .paramDict :
9495 return value
9596
@@ -104,7 +105,8 @@ def urlencode(value, safe="%&=", convall=False, limit=False, failsafe=True):
104105
105106 # corner case when character % really needs to be
106107 # encoded (when not representing url encoded char)
107- if failsafe and all (map (lambda x : '%' in x , [safe , value ])):
108+ # except in cases when tampering scripts are used
109+ if all (map (lambda x : '%' in x , [safe , value ])) and not kb .tamperFunctions :
108110 value = re .sub ("%(?![0-9a-fA-F]{2})" , "%25" , value , re .DOTALL | re .IGNORECASE )
109111
110112 while True :
0 commit comments