container/op: unexport bind resolved source field
All checks were successful
Test / Create distribution (push) Successful in 33s
Test / Sandbox (push) Successful in 2m5s
Test / Hakurei (push) Successful in 2m57s
Test / Hpkg (push) Successful in 3m55s
Test / Sandbox (race detector) (push) Successful in 3m59s
Test / Hakurei (race detector) (push) Successful in 4m34s
Test / Flake checks (push) Successful in 1m21s
All checks were successful
Test / Create distribution (push) Successful in 33s
Test / Sandbox (push) Successful in 2m5s
Test / Hakurei (push) Successful in 2m57s
Test / Hpkg (push) Successful in 3m55s
Test / Sandbox (race detector) (push) Successful in 3m59s
Test / Hakurei (race detector) (push) Successful in 4m34s
Test / Flake checks (push) Successful in 1m21s
This is used for symlink resolution and is only used internally. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
ff66296378
commit
6a3886e9db
@ -68,7 +68,7 @@ func (f *Ops) Bind(source, target string, flags int) *Ops {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type BindMountOp struct {
|
type BindMountOp struct {
|
||||||
Source, SourceFinal, Target string
|
Source, sourceFinal, Target string
|
||||||
|
|
||||||
Flags int
|
Flags int
|
||||||
}
|
}
|
||||||
@ -89,18 +89,18 @@ func (b *BindMountOp) early(*Params) error {
|
|||||||
|
|
||||||
if v, err := filepath.EvalSymlinks(b.Source); err != nil {
|
if v, err := filepath.EvalSymlinks(b.Source); err != nil {
|
||||||
if os.IsNotExist(err) && b.Flags&BindOptional != 0 {
|
if os.IsNotExist(err) && b.Flags&BindOptional != 0 {
|
||||||
b.SourceFinal = "\x00"
|
b.sourceFinal = "\x00"
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return wrapErrSelf(err)
|
return wrapErrSelf(err)
|
||||||
} else {
|
} else {
|
||||||
b.SourceFinal = v
|
b.sourceFinal = v
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BindMountOp) apply(*Params) error {
|
func (b *BindMountOp) apply(*Params) error {
|
||||||
if b.SourceFinal == "\x00" {
|
if b.sourceFinal == "\x00" {
|
||||||
if b.Flags&BindOptional == 0 {
|
if b.Flags&BindOptional == 0 {
|
||||||
// unreachable
|
// unreachable
|
||||||
return EBADE
|
return EBADE
|
||||||
@ -108,11 +108,11 @@ func (b *BindMountOp) apply(*Params) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if !path.IsAbs(b.SourceFinal) || !path.IsAbs(b.Target) {
|
if !path.IsAbs(b.sourceFinal) || !path.IsAbs(b.Target) {
|
||||||
return msg.WrapErr(EBADE, "path is not absolute")
|
return msg.WrapErr(EBADE, "path is not absolute")
|
||||||
}
|
}
|
||||||
|
|
||||||
source := toHost(b.SourceFinal)
|
source := toHost(b.sourceFinal)
|
||||||
target := toSysroot(b.Target)
|
target := toSysroot(b.Target)
|
||||||
|
|
||||||
// this perm value emulates bwrap behaviour as it clears bits from 0755 based on
|
// this perm value emulates bwrap behaviour as it clears bits from 0755 based on
|
||||||
@ -135,7 +135,7 @@ func (b *BindMountOp) apply(*Params) error {
|
|||||||
flags |= MS_NODEV
|
flags |= MS_NODEV
|
||||||
}
|
}
|
||||||
|
|
||||||
return hostProc.bindMount(source, target, flags, b.SourceFinal == b.Target)
|
return hostProc.bindMount(source, target, flags, b.sourceFinal == b.Target)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BindMountOp) Is(op Op) bool { vb, ok := op.(*BindMountOp); return ok && *b == *vb }
|
func (b *BindMountOp) Is(op Op) bool { vb, ok := op.(*BindMountOp); return ok && *b == *vb }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user