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 <jacknagel@gmail.com>
This commit is contained in:
		
							parent
							
								
									e7947f4f92
								
							
						
					
					
						commit
						c0eb8a3bc8
					
				| @ -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 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jack Nagel
						Jack Nagel