Cygwin: console: Fix segfault on shared_console_info access.
- Accessing shared_console_info before initialization causes access violation because it is a NULL pointer. The cause of the problem reported in https://cygwin.com/ml/cygwin/2020-02/msg00197.html is this NULL pointer access in request_xterm_mode_output() when it is called from close(). This patch makes sure that shared_console_info is not NULL before calling request_xterm_mode_output().
This commit is contained in:
		
				
					committed by
					
						 Corinna Vinschen
						Corinna Vinschen
					
				
			
			
				
	
			
			
			
						parent
						
							86f9ce97bc
						
					
				
				
					commit
					17528b9d2c
				
			| @@ -1159,18 +1159,17 @@ fhandler_console::close () | ||||
|  | ||||
|   acquire_output_mutex (INFINITE); | ||||
|  | ||||
|   if (shared_console_info && myself->pid == con.owner && | ||||
|       wincap.has_con_24bit_colors () && !con_is_legacy) | ||||
|     request_xterm_mode_output (false); | ||||
|  | ||||
|   /* Restore console mode if this is the last closure. */ | ||||
|   OBJECT_BASIC_INFORMATION obi; | ||||
|   NTSTATUS status; | ||||
|   status = NtQueryObject (get_handle (), ObjectBasicInformation, | ||||
| 			  &obi, sizeof obi, NULL); | ||||
|   if (NT_SUCCESS (status) && obi.HandleCount == 1) | ||||
|     if (wincap.has_con_24bit_colors ()) | ||||
|       request_xterm_mode_output (false); | ||||
|   if (shared_console_info && wincap.has_con_24bit_colors ()) | ||||
|     { | ||||
|       /* Restore console mode if this is the last closure. */ | ||||
|       OBJECT_BASIC_INFORMATION obi; | ||||
|       NTSTATUS status; | ||||
|       status = NtQueryObject (get_handle (), ObjectBasicInformation, | ||||
| 			      &obi, sizeof obi, NULL); | ||||
|       if ((NT_SUCCESS (status) && obi.HandleCount == 1) | ||||
| 	  || myself->pid == con.owner) | ||||
| 	request_xterm_mode_output (false); | ||||
|     } | ||||
|  | ||||
|   release_output_mutex (); | ||||
|  | ||||
|   | ||||
| @@ -5,3 +5,7 @@ Bug Fixes: | ||||
|   Don't move cursor to the right in case of a NUL character in the console | ||||
|   output stream, this is not backed by terminfo. | ||||
|   Addresses: https://cygwin.com/ml/cygwin/2020-02/msg00162.html | ||||
|  | ||||
| - Fix a segfault when starting, e.g., mintty from a bash in a console | ||||
|   running xterm emulation. | ||||
|   Addresses: https://cygwin.com/ml/cygwin/2020-02/msg00197.html | ||||
|   | ||||
		Reference in New Issue
	
	Block a user