avoid user-level segfault if a process doesn't call exit()
This commit is contained in:
		
							parent
							
								
									872fa88e8a
								
							
						
					
					
						commit
						76ad8e974f
					
				
					 2 changed files with 12 additions and 1 deletions
				
			
		
							
								
								
									
										2
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -90,7 +90,7 @@ tags: $(OBJS) _init | |||
| ULIB = $U/ulib.o $U/usys.o $U/printf.o $U/umalloc.o | ||||
| 
 | ||||
| _%: %.o $(ULIB) | ||||
| 	$(LD) $(LDFLAGS) -N -e main -Ttext 0 -o $@ $^ | ||||
| 	$(LD) $(LDFLAGS) -N -e _main -Ttext 0 -o $@ $^ | ||||
| 	$(OBJDUMP) -S $@ > $*.asm | ||||
| 	$(OBJDUMP) -t $@ | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > $*.sym | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										11
									
								
								user/ulib.c
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								user/ulib.c
									
										
									
									
									
								
							|  | @ -3,6 +3,17 @@ | |||
| #include "kernel/fcntl.h" | ||||
| #include "user/user.h" | ||||
| 
 | ||||
| //
 | ||||
| // wrapper so that it's OK if main() does not call exit().
 | ||||
| //
 | ||||
| void | ||||
| _main() | ||||
| { | ||||
|   extern int main(); | ||||
|   main(); | ||||
|   exit(0); | ||||
| } | ||||
| 
 | ||||
| char* | ||||
| strcpy(char *s, const char *t) | ||||
| { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue