Skip to content

fix(vfs): skip size_t header in _sbf_FILEIO_write for bytes data#1

Open
MonteCrypto999 wants to merge 1 commit intoSolanaPython:solanafrom
MonteCrypto999:fix/fileio-write-bytes-offset
Open

fix(vfs): skip size_t header in _sbf_FILEIO_write for bytes data#1
MonteCrypto999 wants to merge 1 commit intoSolanaPython:solanafrom
MonteCrypto999:fix/fileio-write-bytes-offset

Conversation

@MonteCrypto999
Copy link
Copy Markdown

The arg_getBytes() function returns a pointer to the internal bytes storage which has layout: [size_t size][actual data bytes]

When writing bytes via f.write(), the code was incorrectly writing from the start of the buffer (the size_t header) instead of the actual data.

This fix adds + sizeof(size_t) to skip the header, consistent with how other code handles bytes data:

  • _solana_sbf.c:106 (CPI data)
  • _solana_sbf.c:181 (CPI data)
  • builtins_sbf.c:1342 (_sbf_builtins_str)
  • PikaVM.c:961 (bytes indexing, fixed in 64a521b)

Without this fix, VFS writes would corrupt data by writing the size header bytes instead of the actual payload.

The arg_getBytes() function returns a pointer to the internal bytes
storage which has layout: [size_t size][actual data bytes]

When writing bytes via f.write(), the code was incorrectly writing
from the start of the buffer (the size_t header) instead of the
actual data.

This fix adds + sizeof(size_t) to skip the header, consistent with
how other code handles bytes data:
- _solana_sbf.c:106 (CPI data)
- _solana_sbf.c:181 (CPI data)
- builtins_sbf.c:1342 (_sbf_builtins_str)
- PikaVM.c:961 (bytes indexing, fixed in 64a521b)

Without this fix, VFS writes would corrupt data by writing the
size header bytes instead of the actual payload.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant