geesefs-0-30-9
Aaron Jacobs 2015-07-24 08:02:49 +10:00
parent 091d0e967c
commit 39b2936592
1 changed files with 18 additions and 5 deletions

View File

@ -15,6 +15,7 @@
package fuseops
import (
"bytes"
"log"
"time"
"unsafe"
@ -38,6 +39,7 @@ import (
func Convert(
opCtx context.Context,
m *fuseshim.Message,
protocol fusekernel.Protocol,
debugLogForOp func(int, string, ...interface{}),
errorLogger *log.Logger,
finished func(error)) (o Op) {
@ -112,12 +114,23 @@ func Convert(
io = to
co = &to.commonOp
case *fuseshim.MkdirRequest:
case fusekernel.OpMkdir:
size := fusekernel.MkdirInSize(protocol)
if m.Len() < size {
goto corrupt
}
in := (*fusekernel.MkdirIn)(m.Data())
name := m.Bytes()[size:]
i := bytes.IndexByte(name, '\x00')
if i < 0 {
goto corrupt
}
name = name[:i]
to := &MkDirOp{
bfReq: typed,
Parent: InodeID(typed.Header.Node),
Name: typed.Name,
Mode: typed.Mode,
Parent: InodeID(m.Header().Node),
Name: string(name),
Mode: fuseshim.FileMode(in.Mode),
}
io = to
co = &to.commonOp