From b02be9674f8c5230d76f78a49ce43b2333a17cb8 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Fri, 26 Jun 2015 10:11:34 +0200 Subject: [PATCH] Fixes #1277 --- lib/core/agent.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/core/agent.py b/lib/core/agent.py index f200d8f75..317d5c656 100644 --- a/lib/core/agent.py +++ b/lib/core/agent.py @@ -174,7 +174,10 @@ class Agent(object): while True: _ = re.search(r"\\g<([^>]+)>", repl) if _: - repl = repl.replace(_.group(0), match.group(int(_.group(1)) if _.group(1).isdigit() else _.group(1))) + try: + repl = repl.replace(_.group(0), match.group(int(_.group(1)) if _.group(1).isdigit() else _.group(1))) + except IndexError: + break else: break retVal = string[:match.start()] + repl + string[match.end():] @@ -185,6 +188,7 @@ class Agent(object): retVal = _(regex, "%s=%s" % (parameter, self.addPayloadDelimiters(newValue.replace("\\", "\\\\"))), paramString) else: retVal = _(r"(\A|\b)%s=%s(\Z|%s|%s|\s)" % (re.escape(parameter), re.escape(origValue), DEFAULT_GET_POST_DELIMITER, DEFAULT_COOKIE_DELIMITER), "%s=%s\g<2>" % (parameter, self.addPayloadDelimiters(newValue.replace("\\", "\\\\"))), paramString) + if retVal == paramString and urlencode(parameter) != parameter: retVal = _(r"(\A|\b)%s=%s" % (re.escape(urlencode(parameter)), re.escape(origValue)), "%s=%s" % (urlencode(parameter), self.addPayloadDelimiters(newValue.replace("\\", "\\\\"))), paramString)