Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting the value of a field of a structured box can overflow onto the next field #75

Open
wenkanglu opened this issue Feb 6, 2023 · 1 comment
Labels
bug Something isn't working

Comments

@wenkanglu
Copy link

Describe the bug
{box_name}.{field_name} = {value}. replaces the field {field_name} of box {box_name} created from a struct without considering the size of {value}. This issue tracks the bug when setting the value of a field to a byte array that is larger than the size defined overflowing into the next field.

To Reproduce

#pragma version 8

struct UserInfo:
    birthday: bytes[10]
    favourite_colour: bytes[20]
end

if Txn.ApplicationID == 0:
    exit(1)
end

box<UserInfo> info_box = CreateBox("foo")
info_box.birthday = "06/02/2023OVERFLOW"
exit(1)

Expected behavior
Field favourite_colour of box with key "foo" should have an empty value ("") but is instead "OVERFLOW". You could also argue that info_box.birthday = "06/02/2023OVERFLOW" should fail outright (assigning a value larger than the size defined in the struct).

Additional context
Related issue: #74

@wenkanglu wenkanglu added the bug Something isn't working label Feb 6, 2023
@wenkanglu wenkanglu changed the title Setting the value of a field of a structured box can overflow onto the next field [BUG] Setting the value of a field of a structured box can overflow onto the next field Feb 6, 2023
@fergalwalsh
Copy link
Collaborator

Discussed on Discord but want to mention here for visibility; this is being worked on as part of the current type checks work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants