Skip to content

Commit 35be643

Browse files
committed
jailer: construct path to chrooted filesystem when applying the Handler, simplify API and code
Signed-off-by: Philipp Mieden <[email protected]>
1 parent d93b040 commit 35be643

File tree

1 file changed

+19
-24
lines changed

1 file changed

+19
-24
lines changed

jailer.go

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -345,29 +345,28 @@ func jail(ctx context.Context, m *Machine, cfg *Config) error {
345345
return nil
346346
}
347347

348-
func linkFileToRootFS(cfg *JailerConfig, dst, src string) error {
349-
if err := os.Link(src, dst); err != nil {
350-
return err
351-
}
352-
353-
return nil
354-
}
355-
356348
// LinkFilesHandler creates a new link files handler that will link files to
357349
// the rootfs
358-
func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
350+
func LinkFilesHandler(kernelImageFileName string) Handler {
359351
return Handler{
360352
Name: LinkFilesToRootFSHandlerName,
361353
Fn: func(ctx context.Context, m *Machine) error {
362354
if m.Cfg.JailerCfg == nil {
363355
return ErrMissingJailerConfig
364356
}
365357

358+
// assemble the path to the jailed root folder on the host
359+
rootfs := filepath.Join(
360+
m.Cfg.JailerCfg.ChrootBaseDir,
361+
filepath.Base(m.Cfg.JailerCfg.ExecFile),
362+
m.Cfg.JailerCfg.ID,
363+
rootfsFolderName,
364+
)
365+
366366
// copy kernel image to root fs
367-
if err := linkFileToRootFS(
368-
m.Cfg.JailerCfg,
369-
filepath.Join(rootfs, kernelImageFileName),
367+
if err := os.Link(
370368
m.Cfg.KernelImagePath,
369+
filepath.Join(rootfs, kernelImageFileName),
371370
); err != nil {
372371
return err
373372
}
@@ -376,10 +375,9 @@ func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
376375
if m.Cfg.InitrdPath != "" {
377376
initrdFilename := filepath.Base(m.Cfg.InitrdPath)
378377
// copy initrd to root fs
379-
if err := linkFileToRootFS(
380-
m.Cfg.JailerCfg,
381-
filepath.Join(rootfs, initrdFilename),
378+
if err := os.Link(
382379
m.Cfg.InitrdPath,
380+
filepath.Join(rootfs, initrdFilename),
383381
); err != nil {
384382
return err
385383
}
@@ -390,10 +388,9 @@ func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
390388
hostPath := StringValue(drive.PathOnHost)
391389
driveFileName := filepath.Base(hostPath)
392390

393-
if err := linkFileToRootFS(
394-
m.Cfg.JailerCfg,
395-
filepath.Join(rootfs, driveFileName),
391+
if err := os.Link(
396392
hostPath,
393+
filepath.Join(rootfs, driveFileName),
397394
); err != nil {
398395
return err
399396
}
@@ -412,10 +409,9 @@ func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
412409
}
413410

414411
fileName := filepath.Base(*fifoPath)
415-
if err := linkFileToRootFS(
416-
m.Cfg.JailerCfg,
417-
filepath.Join(rootfs, fileName),
412+
if err := os.Link(
418413
*fifoPath,
414+
filepath.Join(rootfs, fileName),
419415
); err != nil {
420416
return err
421417
}
@@ -441,9 +437,8 @@ type NaiveChrootStrategy struct {
441437
}
442438

443439
// NewNaiveChrootStrategy returns a new NaivceChrootStrategy
444-
func NewNaiveChrootStrategy(rootfs, kernelImagePath string) NaiveChrootStrategy {
440+
func NewNaiveChrootStrategy(kernelImagePath string) NaiveChrootStrategy {
445441
return NaiveChrootStrategy{
446-
Rootfs: rootfs,
447442
KernelImagePath: kernelImagePath,
448443
}
449444
}
@@ -460,7 +455,7 @@ func (s NaiveChrootStrategy) AdaptHandlers(handlers *Handlers) error {
460455

461456
handlers.FcInit = handlers.FcInit.AppendAfter(
462457
CreateLogFilesHandlerName,
463-
LinkFilesHandler(filepath.Join(s.Rootfs, rootfsFolderName), filepath.Base(s.KernelImagePath)),
458+
LinkFilesHandler(filepath.Base(s.KernelImagePath)),
464459
)
465460

466461
return nil

0 commit comments

Comments
 (0)