Преглед на файлове

Merge pull request #25597 from vieux/check_plugin_manifest_json

check plugin manifest is correctly formatted before push
Tõnis Tiigi преди 9 години
родител
ревизия
f5ef498289
променени са 1 файла, в които са добавени 11 реда и са изтрити 3 реда
  1. 11 3
      plugin/backend.go

+ 11 - 3
plugin/backend.go

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