catch IndexError in parse_redeemScript
This commit is contained in:
parent
4b6a3e2e5d
commit
063e40bf18
|
@ -366,6 +366,8 @@ def parse_scriptSig(d, _bytes):
|
||||||
try:
|
try:
|
||||||
m, n, x_pubkeys, pubkeys, redeemScript = parse_redeemScript(decoded[-1][1])
|
m, n, x_pubkeys, pubkeys, redeemScript = parse_redeemScript(decoded[-1][1])
|
||||||
except NotRecognizedRedeemScript:
|
except NotRecognizedRedeemScript:
|
||||||
|
print_error("parse_scriptSig: cannot find address in input script (p2sh?)",
|
||||||
|
bh2u(_bytes))
|
||||||
# we could still guess:
|
# we could still guess:
|
||||||
# d['address'] = hash160_to_p2sh(hash_160(decoded[-1][1]))
|
# d['address'] = hash160_to_p2sh(hash_160(decoded[-1][1]))
|
||||||
return
|
return
|
||||||
|
@ -385,13 +387,15 @@ def parse_scriptSig(d, _bytes):
|
||||||
|
|
||||||
def parse_redeemScript(s):
|
def parse_redeemScript(s):
|
||||||
dec2 = [ x for x in script_GetOp(s) ]
|
dec2 = [ x for x in script_GetOp(s) ]
|
||||||
m = dec2[0][0] - opcodes.OP_1 + 1
|
try:
|
||||||
n = dec2[-2][0] - opcodes.OP_1 + 1
|
m = dec2[0][0] - opcodes.OP_1 + 1
|
||||||
|
n = dec2[-2][0] - opcodes.OP_1 + 1
|
||||||
|
except IndexError:
|
||||||
|
raise NotRecognizedRedeemScript()
|
||||||
op_m = opcodes.OP_1 + m - 1
|
op_m = opcodes.OP_1 + m - 1
|
||||||
op_n = opcodes.OP_1 + n - 1
|
op_n = opcodes.OP_1 + n - 1
|
||||||
match_multisig = [ op_m ] + [opcodes.OP_PUSHDATA4]*n + [ op_n, opcodes.OP_CHECKMULTISIG ]
|
match_multisig = [ op_m ] + [opcodes.OP_PUSHDATA4]*n + [ op_n, opcodes.OP_CHECKMULTISIG ]
|
||||||
if not match_decoded(dec2, match_multisig):
|
if not match_decoded(dec2, match_multisig):
|
||||||
print_error("parse_redeemScript: not multisig", bh2u(s))
|
|
||||||
raise NotRecognizedRedeemScript()
|
raise NotRecognizedRedeemScript()
|
||||||
x_pubkeys = [bh2u(x[1]) for x in dec2[1:-2]]
|
x_pubkeys = [bh2u(x[1]) for x in dec2[1:-2]]
|
||||||
pubkeys = [safe_parse_pubkey(x) for x in x_pubkeys]
|
pubkeys = [safe_parse_pubkey(x) for x in x_pubkeys]
|
||||||
|
|
Loading…
Reference in New Issue