Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/markup
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-12-18 20:20:12 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-12-19 19:03:07 +0300
commit10ae7c3210cd1add14d3750aa9512a87df0e1146 (patch)
tree6fa7eb1e9bfe093f3b611bbb286aefe591e1dc7a /markup
parentae2d1bd52df0099190ef9195666d0788708b0385 (diff)
Improve LookPath
Diffstat (limited to 'markup')
-rw-r--r--markup/asciidocext/convert.go5
-rw-r--r--markup/internal/external.go16
-rw-r--r--markup/pandoc/convert.go5
-rw-r--r--markup/rst/convert.go7
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 ""
}