Commit 2c015735 authored by jiangpeng's avatar jiangpeng

dapp/vote:check group admin addr in checktx

parent fdef66ed
This diff is collapsed.
...@@ -3,6 +3,8 @@ package executor ...@@ -3,6 +3,8 @@ package executor
import ( import (
"encoding/hex" "encoding/hex"
"github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
vty "github.com/33cn/plugin/plugin/dapp/vote/types" vty "github.com/33cn/plugin/plugin/dapp/vote/types"
) )
...@@ -84,7 +86,7 @@ func (v *vote) checkUpdateGroup(update *vty.UpdateGroup, tx *types.Transaction, ...@@ -84,7 +86,7 @@ func (v *vote) checkUpdateGroup(update *vty.UpdateGroup, tx *types.Transaction,
} }
//防止将管理员全部删除 //防止将管理员全部删除
if len(update.RemoveAdmins) >= len(update.AddAdmins)+len(groupInfo.GetAdmins()) { if len(update.RemoveAdmins) >= len(groupInfo.GetAdmins()) && len(update.AddAdmins) == 0 {
return errAddrPermissionDenied return errAddrPermissionDenied
} }
...@@ -105,6 +107,14 @@ func (v *vote) checkUpdateGroup(update *vty.UpdateGroup, tx *types.Transaction, ...@@ -105,6 +107,14 @@ func (v *vote) checkUpdateGroup(update *vty.UpdateGroup, tx *types.Transaction,
} }
} }
//保证管理员地址合法性
for _, addr := range update.GetAddAdmins() {
if err := dapp.CheckAddress(v.GetAPI().GetConfig(), addr, v.GetHeight()); err != nil {
elog.Error("checkUpdateGroup", "addr", addr, "CheckAddress err", err)
return types.ErrInvalidAddress
}
}
return nil return nil
} }
...@@ -166,7 +176,7 @@ func (v *vote) checkCommitVote(commit *vty.CommitVote, tx *types.Transaction, in ...@@ -166,7 +176,7 @@ func (v *vote) checkCommitVote(commit *vty.CommitVote, tx *types.Transaction, in
// check if already vote // check if already vote
for _, info := range voteInfo.GetCommitInfos() { for _, info := range voteInfo.GetCommitInfos() {
if action.fromAddr == info.Addr { if action.fromAddr == info.Addr {
return errAlreadyVoted return errAddrAlreadyVoted
} }
} }
......
...@@ -18,7 +18,7 @@ var ( ...@@ -18,7 +18,7 @@ var (
errInvalidVoteID = errors.New("errInvalidVoteID") errInvalidVoteID = errors.New("errInvalidVoteID")
errInvalidGroupID = errors.New("errInvalidGroupID") errInvalidGroupID = errors.New("errInvalidGroupID")
errInvalidOptionIndex = errors.New("errInvalidOptionIndex") errInvalidOptionIndex = errors.New("errInvalidOptionIndex")
errAlreadyVoted = errors.New("errAlreadyVoted") errAddrAlreadyVoted = errors.New("errAddrAlreadyVoted")
errInvalidGroupMember = errors.New("errInvalidGroupMember") errInvalidGroupMember = errors.New("errInvalidGroupMember")
errVoteAlreadyFinished = errors.New("errVoteAlreadyFinished") errVoteAlreadyFinished = errors.New("errVoteAlreadyFinished")
errVoteAlreadyClosed = errors.New("errVoteAlreadyClosed") errVoteAlreadyClosed = errors.New("errVoteAlreadyClosed")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment