From c0eb8a3bc8658b6581fefc5eb3431c9867ebd7f6 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Thu, 10 Nov 2011 19:44:57 -0600 Subject: [PATCH] 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 Homebrew/homebrew#8521. Signed-off-by: Jack Nagel --- Library/Homebrew/cmd/doctor.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 9bfc9b3087..6c4dc4d430 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