aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2011-11-10 19:44:57 -0600
committerJack Nagel2011-11-10 20:47:17 -0600
commit6b1ebced6cbcbe35462dd9b120cf8360cb276c9e (patch)
tree2480170789cc93c305e5d4f044911d6a764c7a58 /Library
parent2c4747066d5896da2107fe9ec9a48784de2d3938 (diff)
downloadhomebrew-6b1ebced6cbcbe35462dd9b120cf8360cb276c9e.tar.bz2
doctor: warn about wide terminals
A terminal width of 262 or greater can trigger a buffer overflow in curl's progress bar code, resulting in a segfault and aborted downloads. Warn about this. cf #8521. Signed-off-by: Jack Nagel <jacknagel@gmail.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/doctor.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb
index 9bfc9b308..6c4dc4d43 100644
--- a/Library/Homebrew/cmd/doctor.rb
+++ b/Library/Homebrew/cmd/doctor.rb
@@ -797,6 +797,20 @@ def check_git_version
end
end
+def check_terminal_width
+ if `tput cols`.chomp.to_i > 262
+ puts <<-EOS.undent
+ Your terminal width is greater than 262 columns.
+
+ This can trigger a segfault in some versions of curl, which may cause
+ downloads to appear to fail.
+
+ You may want to adjust your terminal size.
+
+ EOS
+ end
+end
+
module Homebrew extend self
def doctor
old_stdout = $stdout
@@ -842,6 +856,7 @@ module Homebrew extend self
check_git_status
check_for_leopard_ssl
check_git_version
+ check_terminal_width
ensure
$stdout = old_stdout
end