Skip to content

sec,stat: fix stat64 struct definition#125

Merged
Snaipe merged 2 commits intoaristanetworks:mainfrom
Snaipe:fix/seccomp-stat-overflow
Jan 22, 2026
Merged

sec,stat: fix stat64 struct definition#125
Snaipe merged 2 commits intoaristanetworks:mainfrom
Snaipe:fix/seccomp-stat-overflow

Conversation

@Snaipe
Copy link
Member

@Snaipe Snaipe commented Jan 21, 2026

This PR fixes the definition of the stat64 struct type.

Its definition was based on glibc rather than the actual kernel header, and it wasn't 4-byte-aligned, which meant that it was significantly larger than the allocated buffer in the caller process, and presumably smashed the stack and/or heap depending on where that buffer lived.

This makes it obvious that these types and functions are specifically
tailor-made for 32-bit architectures, which typically have a different
alignment than 64-bit.
This change fixes the struct definition of stat64 to actually match the
i686 system call interface. Among other things:

* It has a broken _ino (__st_ino) field near the beginning, which must be
  partially filled with the bottom 32-bits of the inode, and a second,
  non-broken ino (st_ino) field at the end, which is the real inode.

* It is packed and 4-byte aligned, so that when bst is compiled on a 64-bit
  architecture, the struct remains compatible

* The timestamp fields are still 32-bit. Go figure.
@Snaipe Snaipe merged commit 441b3a7 into aristanetworks:main Jan 22, 2026
2 of 3 checks passed
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