summaryrefslogtreecommitdiff
path: root/lib/reline
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2022-01-02 11:44:45 +0900
committergit <svn-admin@ruby-lang.org>2022-01-02 11:44:07 +0900
commit76181ae940c485d80990941d064f8fdc26b3b4ee (patch)
tree8ad940f3107cebc837acacd2cfa73b86665c104b /lib/reline
parentf375b6414d20209ce5d56b7d2f016c286293b075 (diff)
[ruby/reline] Check capname of tigetstr/tigetflag/tigetnum
Incorrect arguments can cause SEGV. https://github.com/ruby/reline/commit/a58748bcf9
Diffstat (limited to 'lib/reline')
-rw-r--r--lib/reline/terminfo.rb3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/reline/terminfo.rb b/lib/reline/terminfo.rb
index 95ff082172..b053ba82c4 100644
--- a/lib/reline/terminfo.rb
+++ b/lib/reline/terminfo.rb
@@ -121,6 +121,7 @@ module Reline::Terminfo
end
def self.tigetstr(capname)
+ raise TerminfoError, "capname is not String: #{capname.inspect}" unless capname.is_a?(String)
capability = @tigetstr.(capname)
case capability.to_i
when 0, -1
@@ -138,6 +139,7 @@ module Reline::Terminfo
end
def self.tigetflag(capname)
+ raise TerminfoError, "capname is not String: #{capname.inspect}" unless capname.is_a?(String)
flag = @tigetflag.(capname).to_i
case flag
when -1
@@ -149,6 +151,7 @@ module Reline::Terminfo
end
def self.tigetnum(capname)
+ raise TerminfoError, "capname is not String: #{capname.inspect}" unless capname.is_a?(String)
num = @tigetnum.(capname).to_i
case num
when -2