Commit 7270585a authored by linj's avatar linj Committed by vipwzw

fix check tx.Execer

parent 83adafb1
package executor package executor
import ( import (
"strings"
"github.com/33cn/chain33/system/dapp" "github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
ptypes "github.com/33cn/plugin/plugin/dapp/js/types" ptypes "github.com/33cn/plugin/plugin/dapp/js/types"
...@@ -17,18 +15,10 @@ func (c *js) userExecName(name string, local bool) string { ...@@ -17,18 +15,10 @@ func (c *js) userExecName(name string, local bool) string {
return execer return execer
} }
func (c *js) checkJsName(name string) bool { // execName 在create 时为 jsvm
if types.IsPara() { // 在 call 时为 user.jsvm.game
return name == types.GetTitle()+ptypes.JsX func (c *js) checkTxExec(txExec string, execName string) bool {
} return txExec == types.ExecName(execName)
return name == ptypes.JsX
}
func (c *js) checkJsPrefix(name string) bool {
if types.IsPara() {
return strings.HasPrefix(name, types.GetTitle()+"user."+ptypes.JsX)
}
return strings.HasPrefix(name, "user."+ptypes.JsX)
} }
func (c *js) Exec_Create(payload *jsproto.Create, tx *types.Transaction, index int) (*types.Receipt, error) { func (c *js) Exec_Create(payload *jsproto.Create, tx *types.Transaction, index int) (*types.Receipt, error) {
...@@ -38,7 +28,7 @@ func (c *js) Exec_Create(payload *jsproto.Create, tx *types.Transaction, index i ...@@ -38,7 +28,7 @@ func (c *js) Exec_Create(payload *jsproto.Create, tx *types.Transaction, index i
} }
execer := c.userExecName(payload.Name, false) execer := c.userExecName(payload.Name, false)
if !c.checkJsName(string(tx.Execer)) { if !c.checkTxExec(string(tx.Execer), ptypes.JsX) {
return nil, types.ErrExecNameNotMatch return nil, types.ErrExecNameNotMatch
} }
c.prefix = types.CalcStatePrefix([]byte(execer)) c.prefix = types.CalcStatePrefix([]byte(execer))
...@@ -66,7 +56,7 @@ func (c *js) Exec_Create(payload *jsproto.Create, tx *types.Transaction, index i ...@@ -66,7 +56,7 @@ func (c *js) Exec_Create(payload *jsproto.Create, tx *types.Transaction, index i
func (c *js) Exec_Call(payload *jsproto.Call, tx *types.Transaction, index int) (*types.Receipt, error) { func (c *js) Exec_Call(payload *jsproto.Call, tx *types.Transaction, index int) (*types.Receipt, error) {
execer := c.userExecName(payload.Name, false) execer := c.userExecName(payload.Name, false)
if !c.checkJsPrefix(string(tx.Execer)) { if !c.checkTxExec(string(tx.Execer), execer) {
return nil, types.ErrExecNameNotMatch return nil, types.ErrExecNameNotMatch
} }
c.prefix = types.CalcStatePrefix([]byte(execer)) c.prefix = types.CalcStatePrefix([]byte(execer))
......
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