nspcc-dev/neo-go
Item cast to struct does not ensure/convert field type
Chiusa
#3610 aperta il 11 ott 2024
I4S4U3bugcompilerhelp wanted
Metriche repository
- Star
- (132 stelle)
- Metriche merge PR
- (Metriche PR in attesa)
Descrizione
Tried to cast item from contract's storage and use it.
Current Behavior
newNodes := storage.Find(ctx, newNodesPrefix, storage.None)
for iterator.Next(newNodes) {
newNode := iterator.Value(newNodes).(struct {
key []byte
val []byte
})
newNode.key[0] = 1
}
leads to SETITEM: invalid item type ByteString
newNode.key[:][0] = 1 solves the issue... why?
Expected Behavior
I said (asserted/converted) that it is a []byte, i want to use it as []byte.
Possible Solution
Ensure, cast or throw an exception at .() operator, not when it is tried to be used later.
Steps to Reproduce
Code from Current Behavior.
Context
https://github.com/nspcc-dev/neofs-contract/pull/438#discussion_r1786975526
Regression
Not sure.
Your Environment
github.com/nspcc-dev/neo-go v0.106.3