nspcc-dev/neo-go
Item cast to struct does not ensure/convert field type
Fechada
#3.610 aberto em 11 de out. de 2024
I4S4U3bugcompilerhelp wanted
Métricas do repositório
- Stars
- (132 estrelas)
- Métricas de merge de PR
- (Mesclagem média 4d 19h) (16 fundiu PRs em 30d)
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