From 083dc3fd7a9b5b9766a48c4319516fd8d101ba4b Mon Sep 17 00:00:00 2001 From: Roshan Date: Thu, 16 Mar 2023 13:48:00 +0800 Subject: [PATCH 1/3] fix data race issue --- x/auth/tx/eip712.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/x/auth/tx/eip712.go b/x/auth/tx/eip712.go index 6ec7f524ee..a96478be25 100644 --- a/x/auth/tx/eip712.go +++ b/x/auth/tx/eip712.go @@ -31,11 +31,6 @@ import ( "github.com/gogo/protobuf/jsonpb" ) -var MsgCodec = jsonpb.Marshaler{ - EmitDefaults: true, - OrigName: true, -} - var domain = apitypes.TypedDataDomain{ Name: "Greenfield Tx", Version: "1.0.0", @@ -164,8 +159,13 @@ func WrapTxToTypedData( signDoc *types.SignDocEip712, msgTypes apitypes.Types, ) (apitypes.TypedData, error) { + msgCodec := jsonpb.Marshaler{ + EmitDefaults: true, + OrigName: true, + } + bz, err := msgCodec.MarshalToString(signDoc) + var txData map[string]interface{} - bz, err := MsgCodec.MarshalToString(signDoc) if err != nil { return apitypes.TypedData{}, errors.Wrap(err, "failed to JSON marshal data") } @@ -180,11 +180,12 @@ func WrapTxToTypedData( // filling nil value cleanTypesAndMsgValue(msgTypes, "Msg", txData["msg"].(map[string]interface{})) - domain.ChainId = math.NewHexOrDecimal256(int64(chainID)) + domainTemp := domain + domainTemp.ChainId = math.NewHexOrDecimal256(int64(chainID)) typedData := apitypes.TypedData{ Types: msgTypes, PrimaryType: "Tx", - Domain: domain, + Domain: domainTemp, Message: txData, } From ae38ed49ba29d1dab02793b639a5e761fde7d8ba Mon Sep 17 00:00:00 2001 From: Roshan Date: Thu, 16 Mar 2023 14:04:02 +0800 Subject: [PATCH 2/3] fix data race issue --- x/auth/tx/eip712.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/x/auth/tx/eip712.go b/x/auth/tx/eip712.go index a96478be25..144e6cb712 100644 --- a/x/auth/tx/eip712.go +++ b/x/auth/tx/eip712.go @@ -180,7 +180,11 @@ func WrapTxToTypedData( // filling nil value cleanTypesAndMsgValue(msgTypes, "Msg", txData["msg"].(map[string]interface{})) - domainTemp := domain + var domainTemp apitypes.TypedDataDomain + domainTemp.Name = domain.Name + domainTemp.Version = domain.Version + domainTemp.VerifyingContract = domain.VerifyingContract + domainTemp.Salt = domain.Salt domainTemp.ChainId = math.NewHexOrDecimal256(int64(chainID)) typedData := apitypes.TypedData{ Types: msgTypes, From 533bf536636d83fa69bdb336245c79d58bc95e61 Mon Sep 17 00:00:00 2001 From: Roshan Date: Thu, 16 Mar 2023 14:28:09 +0800 Subject: [PATCH 3/3] fix review comments --- x/auth/tx/eip712.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/x/auth/tx/eip712.go b/x/auth/tx/eip712.go index 144e6cb712..fe2df84be9 100644 --- a/x/auth/tx/eip712.go +++ b/x/auth/tx/eip712.go @@ -31,7 +31,7 @@ import ( "github.com/gogo/protobuf/jsonpb" ) -var domain = apitypes.TypedDataDomain{ +var domain = &apitypes.TypedDataDomain{ Name: "Greenfield Tx", Version: "1.0.0", VerifyingContract: "greenfield", @@ -180,11 +180,7 @@ func WrapTxToTypedData( // filling nil value cleanTypesAndMsgValue(msgTypes, "Msg", txData["msg"].(map[string]interface{})) - var domainTemp apitypes.TypedDataDomain - domainTemp.Name = domain.Name - domainTemp.Version = domain.Version - domainTemp.VerifyingContract = domain.VerifyingContract - domainTemp.Salt = domain.Salt + domainTemp := *domain domainTemp.ChainId = math.NewHexOrDecimal256(int64(chainID)) typedData := apitypes.TypedData{ Types: msgTypes,