forked from security/hakurei
internal/pipewire: do not clobber error parsing SCMs
The error is handled later, clobbering it here breaks error handling when SCMs are present. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -271,16 +271,20 @@ func (ctx *Context) recvmsg(remaining []byte) (payload []byte, err error) {
|
||||
n, oobn, recvflags, err = ctx.conn.Recvmsg(ctx.iovecBuf[len(remaining):], ctx.oobBuf[:], recvmsgFlags)
|
||||
|
||||
if oob := ctx.oobBuf[:oobn]; len(oob) > 0 {
|
||||
var oobErr error
|
||||
|
||||
var scm []syscall.SocketControlMessage
|
||||
if scm, err = syscall.ParseSocketControlMessage(oob); err != nil {
|
||||
if scm, oobErr = syscall.ParseSocketControlMessage(oob); oobErr != nil {
|
||||
ctx.closeReceivedFiles()
|
||||
err = oobErr
|
||||
return
|
||||
}
|
||||
|
||||
var fds []int
|
||||
for i := range scm {
|
||||
if fds, err = syscall.ParseUnixRights(&scm[i]); err != nil {
|
||||
if fds, oobErr = syscall.ParseUnixRights(&scm[i]); oobErr != nil {
|
||||
ctx.closeReceivedFiles()
|
||||
err = oobErr
|
||||
return
|
||||
}
|
||||
ctx.receivedFiles = append(ctx.receivedFiles, fds...)
|
||||
|
||||
Reference in New Issue
Block a user