@@ -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