cmd/disasm: fix array-out-of-bounds error (#3491)
This commit is contained in:
		
							parent
							
								
									17182732f5
								
							
						
					
					
						commit
						0a5450fe04
					
				| @ -42,15 +42,19 @@ func main() { | |||||||
| 
 | 
 | ||||||
| 	for pc := uint64(0); pc < uint64(len(code)); pc++ { | 	for pc := uint64(0); pc < uint64(len(code)); pc++ { | ||||||
| 		op := vm.OpCode(code[pc]) | 		op := vm.OpCode(code[pc]) | ||||||
| 		fmt.Printf("%-5d  %v", pc, op) |  | ||||||
| 
 | 
 | ||||||
| 		switch op { | 		switch op { | ||||||
| 		case vm.PUSH1, vm.PUSH2, vm.PUSH3, vm.PUSH4, vm.PUSH5, vm.PUSH6, vm.PUSH7, vm.PUSH8, vm.PUSH9, vm.PUSH10, vm.PUSH11, vm.PUSH12, vm.PUSH13, vm.PUSH14, vm.PUSH15, vm.PUSH16, vm.PUSH17, vm.PUSH18, vm.PUSH19, vm.PUSH20, vm.PUSH21, vm.PUSH22, vm.PUSH23, vm.PUSH24, vm.PUSH25, vm.PUSH26, vm.PUSH27, vm.PUSH28, vm.PUSH29, vm.PUSH30, vm.PUSH31, vm.PUSH32: | 		case vm.PUSH1, vm.PUSH2, vm.PUSH3, vm.PUSH4, vm.PUSH5, vm.PUSH6, vm.PUSH7, vm.PUSH8, vm.PUSH9, vm.PUSH10, vm.PUSH11, vm.PUSH12, vm.PUSH13, vm.PUSH14, vm.PUSH15, vm.PUSH16, vm.PUSH17, vm.PUSH18, vm.PUSH19, vm.PUSH20, vm.PUSH21, vm.PUSH22, vm.PUSH23, vm.PUSH24, vm.PUSH25, vm.PUSH26, vm.PUSH27, vm.PUSH28, vm.PUSH29, vm.PUSH30, vm.PUSH31, vm.PUSH32: | ||||||
| 			a := uint64(op) - uint64(vm.PUSH1) + 1 | 			a := uint64(op) - uint64(vm.PUSH1) + 1 | ||||||
| 			fmt.Printf("  => %x", code[pc+1:pc+1+a]) | 			u := pc + 1 + a | ||||||
| 
 | 			if uint64(len(code)) <= pc || uint64(len(code)) < u { | ||||||
|  | 				fmt.Printf("Error: incomplete push instruction at %v\n", pc) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			fmt.Printf("%-5d  %v  => %x\n", pc, op, code[pc+1:u]) | ||||||
| 			pc += a | 			pc += a | ||||||
|  | 		default: | ||||||
|  | 			fmt.Printf("%-5d  %v\n", pc, op) | ||||||
| 		} | 		} | ||||||
| 		fmt.Println() |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user