aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain/asm.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-05-08 20:20:06 +0800
committerobscuren <geffobscura@gmail.com>2014-05-08 20:20:06 +0800
commit554f4f6f7d8b8bc5332d42631ec9de0d7015eccf (patch)
tree7d68f54fb31700d7ab6b7d41395701f855c4183f /ethchain/asm.go
parent6c66cb3fa9d73fbb9f570a3f1b7f7dcd24ee2b7f (diff)
downloaddexon-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar
dexon-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.gz
dexon-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.bz2
dexon-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.lz
dexon-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.xz
dexon-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.tar.zst
dexon-554f4f6f7d8b8bc5332d42631ec9de0d7015eccf.zip
Fixed disasamble for all pushes
Diffstat (limited to 'ethchain/asm.go')
-rw-r--r--ethchain/asm.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/ethchain/asm.go b/ethchain/asm.go
index d46e46af7..492be0999 100644
--- a/ethchain/asm.go
+++ b/ethchain/asm.go
@@ -21,9 +21,10 @@ func Disassemble(script []byte) (asm []string) {
asm = append(asm, fmt.Sprintf("%v", op))
switch op {
- case oPUSH32: // Push PC+1 on to the stack
+ case oPUSH1, oPUSH2, oPUSH3, oPUSH4, oPUSH5, oPUSH6, oPUSH7, oPUSH8, oPUSH9, oPUSH10, oPUSH11, oPUSH12, oPUSH13, oPUSH14, oPUSH15, oPUSH16, oPUSH17, oPUSH18, oPUSH19, oPUSH20, oPUSH21, oPUSH22, oPUSH23, oPUSH24, oPUSH25, oPUSH26, oPUSH27, oPUSH28, oPUSH29, oPUSH30, oPUSH31, oPUSH32:
pc.Add(pc, ethutil.Big1)
- data := script[pc.Int64() : pc.Int64()+32]
+ a := int64(op) - int64(oPUSH1) + 1
+ data := script[pc.Int64() : pc.Int64()+a]
val := ethutil.BigD(data)
var b []byte
@@ -35,7 +36,7 @@ func Disassemble(script []byte) (asm []string) {
asm = append(asm, fmt.Sprintf("0x%x", b))
- pc.Add(pc, big.NewInt(31))
+ pc.Add(pc, big.NewInt(a-1))
}
pc.Add(pc, ethutil.Big1)