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)]