diff options
author | Taylor Gerring <taylor.gerring@gmail.com> | 2015-04-02 21:53:04 +0800 |
---|---|---|
committer | Taylor Gerring <taylor.gerring@gmail.com> | 2015-04-02 21:53:04 +0800 |
commit | aa71e27a3b0f42b980082c52232c68fb50a45052 (patch) | |
tree | 544c33d6af9d5657d8a422d218a8b9883f059765 | |
parent | 39085905783829161738207271aa35386f6ebc72 (diff) | |
download | dexon-aa71e27a3b0f42b980082c52232c68fb50a45052.tar.gz dexon-aa71e27a3b0f42b980082c52232c68fb50a45052.tar.zst dexon-aa71e27a3b0f42b980082c52232c68fb50a45052.zip |
Detect non-valid strings for blockheight
-rw-r--r-- | common/bytes.go | 5 | ||||
-rw-r--r-- | rpc/args.go | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/common/bytes.go b/common/bytes.go index 2d885ac74..5bdacd810 100644 --- a/common/bytes.go +++ b/common/bytes.go @@ -127,6 +127,11 @@ func CopyBytes(b []byte) (copiedBytes []byte) { return } +func HasHexPrefix(str string) bool { + l := len(str) + return l >= 2 && str[0:2] == "0x" +} + func IsHex(str string) bool { l := len(str) return l >= 4 && l%2 == 0 && str[0:2] == "0x" diff --git a/rpc/args.go b/rpc/args.go index a8cb7dcb1..cebabf4ba 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -41,7 +41,11 @@ func blockHeight(raw interface{}, number *int64) error { case "pending": *number = -2 default: - *number = common.String2Big(str).Int64() + if common.HasHexPrefix(str) { + *number = common.String2Big(str).Int64() + } else { + return NewInvalidTypeError("blockNumber", "is not a valid string") + } } return nil |