diff options
author | gVisor bot <gvisor-bot@google.com> | 2019-08-27 18:52:35 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-08-27 18:52:35 +0000 |
commit | fc3fe511ae13663d768b64734a64810af8bc03ab (patch) | |
tree | 59094c9e3622b39eb77b5e55cb9131e62f5e58c7 /pkg/sentry/syscalls | |
parent | 0e4f2c8ca5b2df123e30bbe918cf09fcbe6c854f (diff) | |
parent | 9679f9891fe524647d5027a3cfb9c892604df064 (diff) |
Merge 9679f989 (automated)
Diffstat (limited to 'pkg/sentry/syscalls')
-rw-r--r-- | pkg/sentry/syscalls/linux/sys_splice.go | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/pkg/sentry/syscalls/linux/sys_splice.go b/pkg/sentry/syscalls/linux/sys_splice.go index 17e3dde1f..8a98fedcb 100644 --- a/pkg/sentry/syscalls/linux/sys_splice.go +++ b/pkg/sentry/syscalls/linux/sys_splice.go @@ -91,22 +91,29 @@ func Sendfile(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.Sysc } // Get files. + inFile := t.GetFile(inFD) + if inFile == nil { + return 0, nil, syserror.EBADF + } + defer inFile.DecRef() + + if !inFile.Flags().Read { + return 0, nil, syserror.EBADF + } + outFile := t.GetFile(outFD) if outFile == nil { return 0, nil, syserror.EBADF } defer outFile.DecRef() - inFile := t.GetFile(inFD) - if inFile == nil { + if !outFile.Flags().Write { return 0, nil, syserror.EBADF } - defer inFile.DecRef() - // Verify that the outfile Append flag is not set. Note that fs.Splice - // itself validates that the output file is writable. + // Verify that the outfile Append flag is not set. if outFile.Flags().Append { - return 0, nil, syserror.EBADF + return 0, nil, syserror.EINVAL } // Verify that we have a regular infile. This is a requirement; the |