@@ -345,29 +345,28 @@ func jail(ctx context.Context, m *Machine, cfg *Config) error {
345
345
return nil
346
346
}
347
347
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
-
356
348
// LinkFilesHandler creates a new link files handler that will link files to
357
349
// the rootfs
358
- func LinkFilesHandler (rootfs , kernelImageFileName string ) Handler {
350
+ func LinkFilesHandler (kernelImageFileName string ) Handler {
359
351
return Handler {
360
352
Name : LinkFilesToRootFSHandlerName ,
361
353
Fn : func (ctx context.Context , m * Machine ) error {
362
354
if m .Cfg .JailerCfg == nil {
363
355
return ErrMissingJailerConfig
364
356
}
365
357
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
+
366
366
// copy kernel image to root fs
367
- if err := linkFileToRootFS (
368
- m .Cfg .JailerCfg ,
369
- filepath .Join (rootfs , kernelImageFileName ),
367
+ if err := os .Link (
370
368
m .Cfg .KernelImagePath ,
369
+ filepath .Join (rootfs , kernelImageFileName ),
371
370
); err != nil {
372
371
return err
373
372
}
@@ -376,10 +375,9 @@ func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
376
375
if m .Cfg .InitrdPath != "" {
377
376
initrdFilename := filepath .Base (m .Cfg .InitrdPath )
378
377
// copy initrd to root fs
379
- if err := linkFileToRootFS (
380
- m .Cfg .JailerCfg ,
381
- filepath .Join (rootfs , initrdFilename ),
378
+ if err := os .Link (
382
379
m .Cfg .InitrdPath ,
380
+ filepath .Join (rootfs , initrdFilename ),
383
381
); err != nil {
384
382
return err
385
383
}
@@ -390,10 +388,9 @@ func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
390
388
hostPath := StringValue (drive .PathOnHost )
391
389
driveFileName := filepath .Base (hostPath )
392
390
393
- if err := linkFileToRootFS (
394
- m .Cfg .JailerCfg ,
395
- filepath .Join (rootfs , driveFileName ),
391
+ if err := os .Link (
396
392
hostPath ,
393
+ filepath .Join (rootfs , driveFileName ),
397
394
); err != nil {
398
395
return err
399
396
}
@@ -412,10 +409,9 @@ func LinkFilesHandler(rootfs, kernelImageFileName string) Handler {
412
409
}
413
410
414
411
fileName := filepath .Base (* fifoPath )
415
- if err := linkFileToRootFS (
416
- m .Cfg .JailerCfg ,
417
- filepath .Join (rootfs , fileName ),
412
+ if err := os .Link (
418
413
* fifoPath ,
414
+ filepath .Join (rootfs , fileName ),
419
415
); err != nil {
420
416
return err
421
417
}
@@ -441,9 +437,8 @@ type NaiveChrootStrategy struct {
441
437
}
442
438
443
439
// NewNaiveChrootStrategy returns a new NaivceChrootStrategy
444
- func NewNaiveChrootStrategy (rootfs , kernelImagePath string ) NaiveChrootStrategy {
440
+ func NewNaiveChrootStrategy (kernelImagePath string ) NaiveChrootStrategy {
445
441
return NaiveChrootStrategy {
446
- Rootfs : rootfs ,
447
442
KernelImagePath : kernelImagePath ,
448
443
}
449
444
}
@@ -460,7 +455,7 @@ func (s NaiveChrootStrategy) AdaptHandlers(handlers *Handlers) error {
460
455
461
456
handlers .FcInit = handlers .FcInit .AppendAfter (
462
457
CreateLogFilesHandlerName ,
463
- LinkFilesHandler (filepath .Join ( s . Rootfs , rootfsFolderName ), filepath . Base (s .KernelImagePath )),
458
+ LinkFilesHandler (filepath .Base (s .KernelImagePath )),
464
459
)
465
460
466
461
return nil
0 commit comments