Selaa lähdekoodia

Merge pull request #25597 from vieux/check_plugin_manifest_json

check plugin manifest is correctly formatted before push
Tõnis Tiigi 9 vuotta sitten
vanhempi
commit
f5ef498289
1 muutettua tiedostoa jossa 11 lisäystä ja 3 poistoa
  1. 11 3
      plugin/backend.go

+ 11 - 3
plugin/backend.go

@@ -3,7 +3,10 @@
 package plugin
 
 import (
+	"bytes"
+	"encoding/json"
 	"fmt"
+	"io/ioutil"
 	"net/http"
 	"os"
 	"path/filepath"
@@ -114,11 +117,16 @@ func (pm *Manager) Push(name string, metaHeader http.Header, authConfig *types.A
 		return err
 	}
 	dest := filepath.Join(pm.libRoot, p.PluginObj.ID)
-	config, err := os.Open(filepath.Join(dest, "manifest.json"))
+	config, err := ioutil.ReadFile(filepath.Join(dest, "manifest.json"))
+	if err != nil {
+		return err
+	}
+
+	var dummy types.Plugin
+	err = json.Unmarshal(config, &dummy)
 	if err != nil {
 		return err
 	}
-	defer config.Close()
 
 	rootfs, err := archive.Tar(filepath.Join(dest, "rootfs"), archive.Gzip)
 	if err != nil {
@@ -126,7 +134,7 @@ func (pm *Manager) Push(name string, metaHeader http.Header, authConfig *types.A
 	}
 	defer rootfs.Close()
 
-	_, err = distribution.Push(name, pm.registryService, metaHeader, authConfig, config, rootfs)
+	_, err = distribution.Push(name, pm.registryService, metaHeader, authConfig, ioutil.NopCloser(bytes.NewReader(config)), rootfs)
 	// XXX: Ignore returning digest for now.
 	// Since digest needs to be written to the ProgressWriter.
 	return err