mirror of
git://git.musl-libc.org/musl
synced 2024-11-26 19:43:33 +08:00
statx: fix uninitialized attributes/mask in fallback path
commit b817541f1c
introduced statx with
a fallback using fstatat, but failed to fill in stx_rdev_major/minor
and stx_attributes[_mask]. the rdev omission has been addressed
separately. rather than explicitly zeroing the attributes and their
mask, pre-fill the entire structure with zeros. this will also cover
the padding adjacent to stx_mode, in case it's ever used in the
future.
explicit zeroing of stx_btime is removed since, with this change, it
will already be pre-zeroed. as an aside, zeroing it was not strictly
necessary, since STATX_BASIC_STATS does not include STATX_BTIME and
thus does not indicate any validity for it.
This commit is contained in:
parent
251cbb6366
commit
4ca8c26776
@ -19,6 +19,7 @@ int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct
|
||||
ret = fstatat(dirfd, path, &st, flags);
|
||||
if (ret) return ret;
|
||||
|
||||
*stx = (struct statx){0};
|
||||
stx->stx_dev_major = major(st.st_dev);
|
||||
stx->stx_dev_minor = minor(st.st_dev);
|
||||
stx->stx_rdev_major = major(st.st_rdev);
|
||||
@ -37,7 +38,6 @@ int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct
|
||||
stx->stx_mtime.tv_nsec = st.st_mtim.tv_nsec;
|
||||
stx->stx_ctime.tv_sec = st.st_ctim.tv_sec;
|
||||
stx->stx_ctime.tv_nsec = st.st_ctim.tv_nsec;
|
||||
stx->stx_btime = (struct statx_timestamp){.tv_sec=0, .tv_nsec=0};
|
||||
stx->stx_mask = STATX_BASIC_STATS;
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user