diff options
author | gVisor bot <gvisor-bot@google.com> | 2019-08-06 17:44:53 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2019-08-06 17:44:53 +0000 |
commit | 952aa85690bcdfb8b75334525cd96bf29b10b7dd (patch) | |
tree | 9806bf12505e3ce57c8facfbd40443315f9dafd1 /pkg/sentry/syscalls | |
parent | caee1bea5310a59c347a1260622c653e60821964 (diff) | |
parent | 704f9610f3d1add26c266888de62d884338f52cc (diff) |
Merge 704f9610 (automated)
Diffstat (limited to 'pkg/sentry/syscalls')
-rw-r--r-- | pkg/sentry/syscalls/linux/sys_splice.go | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/pkg/sentry/syscalls/linux/sys_splice.go b/pkg/sentry/syscalls/linux/sys_splice.go index a7c98efcb..17e3dde1f 100644 --- a/pkg/sentry/syscalls/linux/sys_splice.go +++ b/pkg/sentry/syscalls/linux/sys_splice.go @@ -207,6 +207,10 @@ func Splice(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.Syscal return 0, nil, syserror.ESPIPE } if outOffset != 0 { + if !outFile.Flags().Pwrite { + return 0, nil, syserror.EINVAL + } + var offset int64 if _, err := t.CopyIn(outOffset, &offset); err != nil { return 0, nil, err @@ -220,6 +224,10 @@ func Splice(t *kernel.Task, args arch.SyscallArguments) (uintptr, *kernel.Syscal return 0, nil, syserror.ESPIPE } if inOffset != 0 { + if !inFile.Flags().Pread { + return 0, nil, syserror.EINVAL + } + var offset int64 if _, err := t.CopyIn(inOffset, &offset); err != nil { return 0, nil, err |