mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 00:32:45 +00:00 
			
		
		
		
	Kernel: Introduce "sigaction" pledge
You now have to pledge "sigaction" to change signal handlers/dispositions. This is to prevent malicious code from messing with assertions (and segmentation faults), which are normally expected to instantly terminate the process but can do other things if you change signal disposition for them.
This commit is contained in:
		
							parent
							
								
									839ae82d66
								
							
						
					
					
						commit
						cddaeb43d3
					
				
					 2 changed files with 2 additions and 1 deletions
				
			
		|  | @ -2711,7 +2711,7 @@ int Process::sys$sigpending(sigset_t* set) | ||||||
| 
 | 
 | ||||||
| int Process::sys$sigaction(int signum, const sigaction* act, sigaction* old_act) | int Process::sys$sigaction(int signum, const sigaction* act, sigaction* old_act) | ||||||
| { | { | ||||||
|     REQUIRE_PROMISE(stdio); |     REQUIRE_PROMISE(sigaction); | ||||||
|     if (signum < 1 || signum >= 32 || signum == SIGKILL || signum == SIGSTOP) |     if (signum < 1 || signum >= 32 || signum == SIGKILL || signum == SIGSTOP) | ||||||
|         return -EINVAL; |         return -EINVAL; | ||||||
|     if (!validate_read_typed(act)) |     if (!validate_read_typed(act)) | ||||||
|  |  | ||||||
|  | @ -72,6 +72,7 @@ extern VirtualAddress g_return_to_ring3_from_signal_trampoline; | ||||||
|     __ENUMERATE_PLEDGE_PROMISE(video)   \ |     __ENUMERATE_PLEDGE_PROMISE(video)   \ | ||||||
|     __ENUMERATE_PLEDGE_PROMISE(accept)  \ |     __ENUMERATE_PLEDGE_PROMISE(accept)  \ | ||||||
|     __ENUMERATE_PLEDGE_PROMISE(settime) \ |     __ENUMERATE_PLEDGE_PROMISE(settime) \ | ||||||
|  |     __ENUMERATE_PLEDGE_PROMISE(sigaction) \ | ||||||
|     __ENUMERATE_PLEDGE_PROMISE(shared_buffer) |     __ENUMERATE_PLEDGE_PROMISE(shared_buffer) | ||||||
| 
 | 
 | ||||||
| enum class Pledge : u32 { | enum class Pledge : u32 { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sergey Bugaev
						Sergey Bugaev