diff options
author | Peter Todd <pete@petertodd.org> | 2014-03-12 20:07:51 -0400 |
---|---|---|
committer | Peter Todd <pete@petertodd.org> | 2014-03-12 20:14:01 -0400 |
commit | b41e5947735097d12eb795f2d1dc9c79ff391aba (patch) | |
tree | 4572d19728ecae595062d871d31c1f39275f6f85 /src | |
parent | ca0b8acbf38a02f39e313a1c633d577f9bf7d983 (diff) | |
download | bitcoin-b41e5947735097d12eb795f2d1dc9c79ff391aba.tar.xz |
Fix script test handling of empty scripts
Previously an empty script would evaluate to OP_0
Diffstat (limited to 'src')
-rw-r--r-- | src/test/data/script_invalid.json | 10 | ||||
-rw-r--r-- | src/test/data/script_valid.json | 12 | ||||
-rw-r--r-- | src/test/script_tests.cpp | 6 |
3 files changed, 27 insertions, 1 deletions
diff --git a/src/test/data/script_invalid.json b/src/test/data/script_invalid.json index 8cb365a46f..609c89be06 100644 --- a/src/test/data/script_invalid.json +++ b/src/test/data/script_invalid.json @@ -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"], diff --git a/src/test/data/script_valid.json b/src/test/data/script_valid.json index 3b4c191865..c50767071a 100644 --- a/src/test/data/script_valid.json +++ b/src/test/data/script_valid.json @@ -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", diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp index dd1b613047..f9ca65653b 100644 --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -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 |