Skip to content

Commit

Permalink
Sanitize input strings that should be a single line
Browse files Browse the repository at this point in the history
  • Loading branch information
junegunn committed Jan 24, 2023
1 parent 618d317 commit 95a7661
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions src/terminal.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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}

Expand Down

0 comments on commit 95a7661

Please sign in to comment.