Page MenuHomeFreeBSD

nfsclient: Copy only initialized fields in nfs_getattr()
ClosedPublic

Authored by markj on May 3 2021, 1:31 PM.

Details

Summary

When loading attributes from the cache, the NFS client is careful to
copy only the fields that it initialized. After fetching attributes
from the server, however, it would copy the entire vattr structure
initialized from the RPC response, so uninitialized stack bytes would
end up being copied to userspace. In particular, va_btime (v2 and v3)
and va_gen (v3) had this problem.

Use a common subroutine to copy fields provided by the NFS client, and
ensure that we provide a dummy va_gen for the v3 case.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

markj requested review of this revision.May 3 2021, 1:31 PM

Looks fine to me. Until I just looked, I didn't realize
that the NFSv4 client doesn't get birthtime.
I'll add that to my todo list, but this patch looks
fine until then.

This revision is now accepted and ready to land.May 3 2021, 9:15 PM