forked from TrueCloudLab/neoneo-go
naitve: disallow contract name modification
This commit is contained in:
parent
c1cc7e6f9d
commit
2336415f42
2 changed files with 14 additions and 0 deletions
|
@ -322,6 +322,9 @@ func (m *Management) Update(d dao.DAO, hash util.Uint160, neff *nef.File, manif
|
||||||
}
|
}
|
||||||
// if manifest was provided, update the contract manifest
|
// if manifest was provided, update the contract manifest
|
||||||
if manif != nil {
|
if manif != nil {
|
||||||
|
if manif.Name != contract.Manifest.Name {
|
||||||
|
return nil, errors.New("contract name can't be changed")
|
||||||
|
}
|
||||||
if !manif.IsValid(contract.Hash) {
|
if !manif.IsValid(contract.Hash) {
|
||||||
return nil, errors.New("invalid manifest for this contract")
|
return nil, errors.New("invalid manifest for this contract")
|
||||||
}
|
}
|
||||||
|
|
|
@ -375,6 +375,17 @@ func TestContractUpdate(t *testing.T) {
|
||||||
checkFAULTState(t, res)
|
checkFAULTState(t, res)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("change name", func(t *testing.T) {
|
||||||
|
var badManifest = cs1.Manifest
|
||||||
|
badManifest.Name += "tail"
|
||||||
|
manifB, err := json.Marshal(badManifest)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
res, err := invokeContractMethod(bc, 10_00000000, cs1.Hash, "update", nef1b, manifB)
|
||||||
|
require.NoError(t, err)
|
||||||
|
checkFAULTState(t, res)
|
||||||
|
})
|
||||||
|
|
||||||
cs1.NEF.Script = append(cs1.NEF.Script, byte(opcode.RET))
|
cs1.NEF.Script = append(cs1.NEF.Script, byte(opcode.RET))
|
||||||
cs1.NEF.Checksum = cs1.NEF.CalculateChecksum()
|
cs1.NEF.Checksum = cs1.NEF.CalculateChecksum()
|
||||||
nef1b, err = cs1.NEF.Bytes()
|
nef1b, err = cs1.NEF.Bytes()
|
||||||
|
|
Loading…
Reference in a new issue