Skip to content

Commit

Permalink
feat: handle the read-only flag inside OpSstore
Browse files Browse the repository at this point in the history
  • Loading branch information
dartdart26 committed Oct 27, 2023
1 parent a4b245a commit e108055
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions fhevm/instructions.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,10 @@ func persistIfVerifiedCiphertext(flagHandleLocation common.Hash, handle common.H
env.SetState(protectedStorage, metadataKey, metadata.serialize())
}

func OpSstore(pc *uint64, env EVMEnvironment, scope ScopeContext) []byte {
func OpSstore(pc *uint64, env EVMEnvironment, scope ScopeContext) ([]byte, error) {
if env.IsReadOnly() {
return nil, ErrWriteProtection
}
loc := scope.GetStack().Pop()
locHash := common.BytesToHash(loc.Bytes())
newVal := scope.GetStack().Pop()
Expand All @@ -288,7 +291,7 @@ func OpSstore(pc *uint64, env EVMEnvironment, scope ScopeContext) []byte {
}
// Set the SSTORE's value in the actual contract.
env.SetState(scope.GetContract().Address(), loc.Bytes32(), newValHash)
return nil
return nil, nil
}

// If there are ciphertext handles in the arguments to a call, delegate them to the callee.
Expand Down

0 comments on commit e108055

Please sign in to comment.