Page MenuHomeFreeBSD

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

Authored by markj on Jun 1 2020, 2:44 PM.

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
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.