Fix script test handling of empty scripts

Previously an empty script would evaluate to OP_0
This commit is contained in:
Peter Todd 2014-03-12 20:07:51 -04:00
parent ca0b8acbf3
commit b41e594773
No known key found for this signature in database
GPG Key ID: 2481403DA5F091FB
3 changed files with 27 additions and 1 deletions

View File

@ -1,8 +1,18 @@
[
["", "DEPTH", "Test the test: we should have an empty stack after scriptSig evaluation"],
[" ", "DEPTH", "and multiple spaces should not change that."],
[" ", "DEPTH"],
[" ", "DEPTH"],
["", ""],
["", "NOP"],
["", "NOP DEPTH"],
["NOP", ""],
["NOP", "DEPTH"],
["NOP","NOP"],
["NOP","NOP DEPTH"],
["DEPTH", ""],
["0x4c01","0x01 NOP", "PUSHDATA1 with not enough bytes"],
["0x4d0200ff","0x01 NOP", "PUSHDATA2 with not enough bytes"],

View File

@ -1,4 +1,16 @@
[
["", "DEPTH 0 EQUAL", "Test the test: we should have an empty stack after scriptSig evaluation"],
[" ", "DEPTH 0 EQUAL", "and multiple spaces should not change that."],
[" ", "DEPTH 0 EQUAL"],
[" ", "DEPTH 0 EQUAL"],
["1 2", "2 EQUALVERIFY 1 EQUAL", "Similarly whitespace around and between symbols"],
["1 2", "2 EQUALVERIFY 1 EQUAL"],
[" 1 2", "2 EQUALVERIFY 1 EQUAL"],
["1 2 ", "2 EQUALVERIFY 1 EQUAL"],
[" 1 2 ", "2 EQUALVERIFY 1 EQUAL"],
["1", ""],
["0x01 0x0b", "11 EQUAL", "push 1 byte"],
["0x02 0x417a", "'Az' EQUAL"],
["0x4b 0x417a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a",

View File

@ -63,7 +63,11 @@ ParseScript(string s)
BOOST_FOREACH(string w, words)
{
if (all(w, is_digit()) ||
if (w.size() == 0)
{
// Empty string, ignore. (boost::split given '' will return one word)
}
else if (all(w, is_digit()) ||
(starts_with(w, "-") && all(string(w.begin()+1, w.end()), is_digit())))
{
// Number