From 7ff3d5f8718746d23c97d37caa3946de06fd580e Mon Sep 17 00:00:00 2001 From: "Owain G. Ainsworth" Date: Tue, 8 Oct 2013 23:21:40 +0100 Subject: [PATCH] Handle sign extended numbers in parsing variable length opcodes. --- script.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/script.go b/script.go index 3488d184..9c98a703 100644 --- a/script.go +++ b/script.go @@ -330,7 +330,9 @@ func parseScriptTemplate(script []byte, opcodemap map[byte]*opcode) ([]parsedOpc return nil, err } off = i + 1 - op.length // beginning of data - if int(l) > len(script[off:]) { + // Disallow entries that do not fit script or were + // sign extended. + if int(l) >= len(script[off:]) || int(l) < 0 { return retScript, StackErrShortScript } pop.data = script[off : off+int(l)]