Skip to content

Commit a78d8ea

Browse files
committed
Verify paths when exporting models
Verify paths when exporting models to ensure everything is exported into a subdirectory of the export directory.
1 parent 820c4fb commit a78d8ea

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

pkg/cmd/export/export.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"jmm/pkg/lib/repo"
1313
"os"
1414
"path"
15+
"path/filepath"
1516

1617
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
1718
"oras.land/oras-go/v2"
@@ -40,40 +41,40 @@ func ExportModel(ctx context.Context, store oras.Target, ref *registry.Reference
4041
// through the config's relevant field to get the correct path for exporting
4142
var modelIdx, codeIdx, datasetIdx int
4243
for _, layerDesc := range manifest.Layers {
43-
var layerExportErr error
44+
layerDir := ""
4445
switch layerDesc.MediaType {
4546
case constants.ModelLayerMediaType:
4647
if !options.exportConf.ExportModels {
4748
continue
4849
}
4950
modelEntry := config.Models[modelIdx]
50-
layerDir := path.Join(options.exportDir, modelEntry.Path)
51+
layerDir = filepath.Join(options.exportDir, modelEntry.Path)
5152
fmt.Printf("Exporting model %s to %s\n", modelEntry.Name, layerDir)
52-
layerExportErr = ExportLayer(ctx, store, layerDesc, layerDir, options.overwrite)
5353
modelIdx += 1
5454

5555
case constants.CodeLayerMediaType:
5656
if !options.exportConf.ExportCode {
5757
continue
5858
}
5959
codeEntry := config.Code[codeIdx]
60-
layerDir := path.Join(options.exportDir, codeEntry.Path)
60+
layerDir = filepath.Join(options.exportDir, codeEntry.Path)
6161
fmt.Printf("Exporting code to %s\n", layerDir)
62-
layerExportErr = ExportLayer(ctx, store, layerDesc, layerDir, options.overwrite)
6362
codeIdx += 1
6463

6564
case constants.DataSetLayerMediaType:
6665
if !options.exportConf.ExportDatasets {
6766
continue
6867
}
6968
datasetEntry := config.DataSets[datasetIdx]
70-
layerDir := path.Join(options.exportDir, datasetEntry.Path)
69+
layerDir = filepath.Join(options.exportDir, datasetEntry.Path)
7170
fmt.Printf("Exporting dataset %s to %s\n", datasetEntry.Name, layerDir)
72-
layerExportErr = ExportLayer(ctx, store, layerDesc, layerDir, options.overwrite)
7371
datasetIdx += 1
7472
}
75-
if layerExportErr != nil {
76-
return layerExportErr
73+
if _, err := filesystem.VerifySubpath(options.exportDir, layerDir); err != nil {
74+
return err
75+
}
76+
if err := ExportLayer(ctx, store, layerDesc, layerDir, options.overwrite); err != nil {
77+
return err
7778
}
7879
}
7980

0 commit comments

Comments
 (0)