diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-12-18 18:20:12 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-12-19 17:03:07 +0100 |
commit | 10ae7c3210cd1add14d3750aa9512a87df0e1146 (patch) | |
tree | 6fa7eb1e9bfe093f3b611bbb286aefe591e1dc7a /markup | |
parent | ae2d1bd52df0099190ef9195666d0788708b0385 (diff) |
Improve LookPath
Diffstat (limited to 'markup')
-rw-r--r-- | markup/asciidocext/convert.go | 5 | ||||
-rw-r--r-- | markup/internal/external.go | 16 | ||||
-rw-r--r-- | markup/pandoc/convert.go | 5 | ||||
-rw-r--r-- | markup/rst/convert.go | 7 |
4 files changed, 20 insertions, 13 deletions
diff --git a/markup/asciidocext/convert.go b/markup/asciidocext/convert.go index e2e5b7865..a5465fe9f 100644 --- a/markup/asciidocext/convert.go +++ b/markup/asciidocext/convert.go @@ -18,9 +18,10 @@ package asciidocext import ( "bytes" - "os/exec" "path/filepath" + "github.com/cli/safeexec" + "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/markup/asciidocext/asciidocext_config" "github.com/gohugoio/hugo/markup/converter" @@ -193,7 +194,7 @@ func (a *asciidocConverter) appendArg(args []string, option, value, defaultValue } func getAsciidoctorExecPath() string { - path, err := exec.LookPath("asciidoctor") + path, err := safeexec.LookPath("asciidoctor") if err != nil { return "" } diff --git a/markup/internal/external.go b/markup/internal/external.go index e8f86ae94..0937afa34 100644 --- a/markup/internal/external.go +++ b/markup/internal/external.go @@ -2,9 +2,11 @@ package internal import ( "bytes" - "os/exec" "strings" + "github.com/cli/safeexec" + "github.com/gohugoio/hugo/common/hexec" + "github.com/gohugoio/hugo/markup/converter" ) @@ -13,12 +15,16 @@ func ExternallyRenderContent( ctx converter.DocumentContext, content []byte, path string, args []string) []byte { logger := cfg.Logger - cmd := exec.Command(path, args...) + cmd, err := hexec.SafeCommand(path, args...) + if err != nil { + logger.Errorf("%s rendering %s: %v", path, ctx.DocumentName, err) + return nil + } cmd.Stdin = bytes.NewReader(content) var out, cmderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &cmderr - err := cmd.Run() + err = cmd.Run() // Most external helpers exit w/ non-zero exit code only if severe, i.e. // halting errors occurred. -> log stderr output regardless of state of err for _, item := range strings.Split(cmderr.String(), "\n") { @@ -40,9 +46,9 @@ func normalizeExternalHelperLineFeeds(content []byte) []byte { } func GetPythonExecPath() string { - path, err := exec.LookPath("python") + path, err := safeexec.LookPath("python") if err != nil { - path, err = exec.LookPath("python.exe") + path, err = safeexec.LookPath("python.exe") if err != nil { return "" } diff --git a/markup/pandoc/convert.go b/markup/pandoc/convert.go index bbf619ce6..63bab2748 100644 --- a/markup/pandoc/convert.go +++ b/markup/pandoc/convert.go @@ -15,8 +15,7 @@ package pandoc import ( - "os/exec" - + "github.com/cli/safeexec" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/markup/internal" @@ -65,7 +64,7 @@ func (c *pandocConverter) getPandocContent(src []byte, ctx converter.DocumentCon } func getPandocExecPath() string { - path, err := exec.LookPath("pandoc") + path, err := safeexec.LookPath("pandoc") if err != nil { return "" } diff --git a/markup/rst/convert.go b/markup/rst/convert.go index c397bf5fe..faed56276 100644 --- a/markup/rst/convert.go +++ b/markup/rst/convert.go @@ -16,9 +16,10 @@ package rst import ( "bytes" - "os/exec" "runtime" + "github.com/cli/safeexec" + "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/markup/internal" @@ -96,9 +97,9 @@ func (c *rstConverter) getRstContent(src []byte, ctx converter.DocumentContext) } func getRstExecPath() string { - path, err := exec.LookPath("rst2html") + path, err := safeexec.LookPath("rst2html") if err != nil { - path, err = exec.LookPath("rst2html.py") + path, err = safeexec.LookPath("rst2html.py") if err != nil { return "" } |