From 8820d97039cffa66411062df4b23ff74d659a220 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 11 Jan 2017 13:20:24 +0100 Subject: internal/ethapi: fix duration parameter of personal_unlockAccount (#3542) --- internal/ethapi/api.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'internal/ethapi') diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 7ea216029..4359181c8 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -19,7 +19,9 @@ package ethapi import ( "bytes" "encoding/hex" + "errors" "fmt" + "math" "math/big" "strings" "time" @@ -237,17 +239,18 @@ func (s *PrivateAccountAPI) ImportRawKey(privkey string, password string) (commo // UnlockAccount will unlock the account associated with the given address with // the given password for duration seconds. If duration is nil it will use a // default of 300 seconds. It returns an indication if the account was unlocked. -func (s *PrivateAccountAPI) UnlockAccount(addr common.Address, password string, duration *hexutil.Uint) (bool, error) { +func (s *PrivateAccountAPI) UnlockAccount(addr common.Address, password string, duration *uint64) (bool, error) { + const max = uint64(time.Duration(math.MaxInt64) / time.Second) var d time.Duration if duration == nil { d = 300 * time.Second + } else if *duration > max { + return false, errors.New("unlock duration too large") } else { d = time.Duration(*duration) * time.Second } - if err := s.am.TimedUnlock(accounts.Account{Address: addr}, password, d); err != nil { - return false, err - } - return true, nil + err := s.am.TimedUnlock(accounts.Account{Address: addr}, password, d) + return err == nil, err } // LockAccount will lock the account associated with the given address when it's unlocked. -- cgit v1.2.3