nspcc-dev/neo-go
Item cast to struct does not ensure/convert field type
Open
#3,610 opened on Oct 11, 2024
I4S4U3bugcompilerhelp wanted
Repository metrics
- Stars
- (132 stars)
- PR merge metrics
- (PR metrics pending)
Description
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