diff --git a/api/loader/fileloader.go b/api/loader/fileloader.go index 4426097cf4..164560d404 100644 --- a/api/loader/fileloader.go +++ b/api/loader/fileloader.go @@ -4,6 +4,7 @@ package loader import ( + "errors" "fmt" "io/ioutil" "log" @@ -298,7 +299,7 @@ func (fl *fileLoader) errIfRepoCycle(newRepoSpec *git.RepoSpec) error { } // Load returns the content of file at the given path, -// else an error. Relative paths are taken relative +// else an error. Relative paths are taken relative // to the root. func (fl *fileLoader) Load(path string) ([]byte, error) { if u, err := url.Parse(path); err == nil && (u.Scheme == "http" || u.Scheme == "https") { @@ -314,6 +315,10 @@ func (fl *fileLoader) Load(path string) ([]byte, error) { } defer resp.Body.Close() if resp.StatusCode < 200 || resp.StatusCode > 299 { + _, err := git.NewRepoSpecFromUrl(path) + if err == nil { + return nil, errors.New("URL is a git repository") + } return nil, fmt.Errorf("%w: status code %d (%s)", ErrorHTTP, resp.StatusCode, http.StatusText(resp.StatusCode)) } body, err := ioutil.ReadAll(resp.Body)