summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2023-01-24 19:33:14 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2023-01-24 19:35:29 +0900
commit95a7661bb1b9d55492ccdee52915f47c8187d021 (patch)
tree0491d89a00f4129c42eb2729684b40ecc04fff29
parent618d3178033d80fbe13b70e6387c3f0673a1bf7a (diff)
Sanitize input strings that should be a single line
-rw-r--r--src/options.go12
-rw-r--r--src/terminal.go2
2 files changed, 10 insertions, 4 deletions
diff --git a/src/options.go b/src/options.go
index deff0c8d..86a168c0 100644
--- a/src/options.go
+++ b/src/options.go
@@ -248,6 +248,10 @@ func (a previewOpts) sameContentLayout(b previewOpts) bool {
return a.wrap == b.wrap && a.headerLines == b.headerLines
}
+func firstLine(s string) string {
+ return strings.SplitN(s, "\n", 2)[0]
+}
+
// Options stores the values of command-line options
type Options struct {
Fuzzy bool
@@ -1658,10 +1662,10 @@ func parseOptions(opts *Options, allArgs []string) {
case "--prompt":
opts.Prompt = nextString(allArgs, &i, "prompt string required")
case "--pointer":
- opts.Pointer = nextString(allArgs, &i, "pointer sign string required")
+ opts.Pointer = firstLine(nextString(allArgs, &i, "pointer sign string required"))
validatePointer = true
case "--marker":
- opts.Marker = nextString(allArgs, &i, "selected sign string required")
+ opts.Marker = firstLine(nextString(allArgs, &i, "selected sign string required"))
validateMarker = true
case "--sync":
opts.Sync = true
@@ -1776,10 +1780,10 @@ func parseOptions(opts *Options, allArgs []string) {
} else if match, value := optString(arg, "--prompt="); match {
opts.Prompt = value
} else if match, value := optString(arg, "--pointer="); match {
- opts.Pointer = value
+ opts.Pointer = firstLine(value)
validatePointer = true
} else if match, value := optString(arg, "--marker="); match {
- opts.Marker = value
+ opts.Marker = firstLine(value)
validateMarker = true
} else if match, value := optString(arg, "-n", "--nth="); match {
opts.Nth = splitNth(value)
diff --git a/src/terminal.go b/src/terminal.go
index b09c47dd..03cbdd68 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -731,6 +731,7 @@ func (t *Terminal) ansiLabelPrinter(str string, color *tui.ColorPair, fill bool)
}
// Extract ANSI color codes
+ str = firstLine(str)
text, colors, _ := extractColor(str, nil, nil)
runes := []rune(text)
@@ -785,6 +786,7 @@ func (t *Terminal) ansiLabelPrinter(str string, color *tui.ColorPair, fill bool)
func (t *Terminal) parsePrompt(prompt string) (func(), int) {
var state *ansiState
+ prompt = firstLine(prompt)
trimmed, colors, _ := extractColor(prompt, state, nil)
item := &Item{text: util.ToChars([]byte(trimmed)), colors: colors}