Page MenuHomeFreeBSD

cap_fileargs: Fix a descriptor leak in the service process.
ClosedPublic

Authored by markj on Jun 1 2020, 2:44 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Oct 24, 7:26 PM
Unknown Object (File)
Mon, Oct 20, 4:33 AM
Unknown Object (File)
Sat, Oct 18, 12:15 AM
Unknown Object (File)
Sat, Oct 18, 12:15 AM
Unknown Object (File)
Sat, Oct 18, 12:15 AM
Unknown Object (File)
Fri, Oct 17, 2:33 PM
Unknown Object (File)
Wed, Oct 15, 7:15 AM
Unknown Object (File)
Fri, Oct 10, 2:58 AM
Subscribers

Details

Summary

The service handler for fileargs_open() tries to pre-open multiple files
and pass descriptors for each back to the sandboxed process in a single
message. This is to amortize the cost of round-trips between the two
processes.

The service process adds a "cache" nvlist to the reply to "open",
containing file descriptors for pre-opened files. However, when adding
that nvlist to the reply, it was making a copy, leaving the cached FDs
open in the service process. They are effectively leaked, which causes
problems when an FD limit is placed on the parent process.

While here, fix spelling in a local variable name.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable