mirror of
				https://github.com/clearml/dropbear
				synced 2025-06-26 18:17:32 +00:00 
			
		
		
		
	syntactical fixups - it compiles, but channel handling code requires fixing.
--HG-- extra : convert_revision : 6f8be81d5486f3499fde596d8e86df2630b24442
This commit is contained in:
		
							parent
							
								
									674a607488
								
							
						
					
					
						commit
						40cb39d00c
					
				
							
								
								
									
										7
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								main.c
									
									
									
									
									
								
							| @ -62,8 +62,11 @@ int main(int argc, char ** argv) | ||||
| 
 | ||||
| 	struct sigaction sa_chld; | ||||
| 
 | ||||
| 	_dropbear_exit = svr_dropbear_exit; | ||||
| 	_dropbear_log = svr_dropbear_log; | ||||
| 
 | ||||
| 	/* get commandline options */ | ||||
| 	opts = getrunopts(argc, argv); | ||||
| 	opts = svr_getopts(argc, argv); | ||||
| 
 | ||||
| 	/* fork */ | ||||
| 	if (opts->forkbg) { | ||||
| @ -239,7 +242,7 @@ int main(int argc, char ** argv) | ||||
| 					dropbear_exit("Couldn't close socket"); | ||||
| 				} | ||||
| 				/* start the session */ | ||||
| 				child_session(childsock, opts, childpipe[1], &remoteaddr); | ||||
| 				svr_session(childsock, opts, childpipe[1], &remoteaddr); | ||||
| 				/* don't return */ | ||||
| 				assert(0); | ||||
| 			} | ||||
|  | ||||
| @ -48,6 +48,9 @@ extern void(*session_remoteclosed)(); | ||||
| /* Server */ | ||||
| void svr_session(int sock, runopts *opts, int childpipe, | ||||
| 		struct sockaddr *remoteaddr); | ||||
| void svr_dropbear_exit(int exitcode, const char* format, va_list param); | ||||
| void svr_dropbear_log(int priority, const char* format, va_list param); | ||||
| 
 | ||||
| 
 | ||||
| struct key_context { | ||||
| 
 | ||||
|  | ||||
| @ -141,8 +141,8 @@ void agentcleanup(struct ChanSess * chansess) { | ||||
| 	 * for themselves */ | ||||
| 	uid = getuid(); | ||||
| 	gid = getgid(); | ||||
| 	if ((setegid(ses.authstate.pw->pw_gid)) < 0 || | ||||
| 		(seteuid(ses.authstate.pw->pw_uid)) < 0) { | ||||
| 	if ((setegid(svr_ses.authstate.pw->pw_gid)) < 0 || | ||||
| 		(seteuid(svr_ses.authstate.pw->pw_uid)) < 0) { | ||||
| 		dropbear_exit("failed to set euid"); | ||||
| 	} | ||||
| 
 | ||||
| @ -194,8 +194,8 @@ static int bindagent(struct ChanSess * chansess) { | ||||
| 	/* drop to user privs to make the dir/file */ | ||||
| 	uid = getuid(); | ||||
| 	gid = getgid(); | ||||
| 	if ((setegid(ses.authstate.pw->pw_gid)) < 0 || | ||||
| 		(seteuid(ses.authstate.pw->pw_uid)) < 0) { | ||||
| 	if ((setegid(svr_ses.authstate.pw->pw_gid)) < 0 || | ||||
| 		(seteuid(svr_ses.authstate.pw->pw_uid)) < 0) { | ||||
| 		dropbear_exit("failed to set euid"); | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
| @ -37,8 +37,6 @@ | ||||
| #include "atomicio.h" | ||||
| 
 | ||||
| static void svr_remoteclosed(); | ||||
| static void svr_dropbear_exit(int exitcode, const char* format, va_list param); | ||||
| static void svr_dropbear_log(int priority, const char* format, va_list param); | ||||
| 
 | ||||
| struct serversession svr_ses; | ||||
| 
 | ||||
| @ -68,8 +66,6 @@ void svr_session(int sock, runopts *opts, int childpipe, | ||||
| 
 | ||||
| 	/* set up messages etc */ | ||||
| 	session_remoteclosed = svr_remoteclosed; | ||||
| 	_dropbear_exit = svr_dropbear_exit; | ||||
| 	_dropbear_log = svr_dropbear_log; | ||||
| 
 | ||||
| 	/* We're ready to go now */ | ||||
| 	sessinitdone = 1; | ||||
| @ -153,19 +149,8 @@ void svr_session(int sock, runopts *opts, int childpipe, | ||||
| 	} /* for(;;) */ | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* called when the remote side closes the connection */ | ||||
| static void svr_remoteclosed() { | ||||
| 
 | ||||
| 	close(ses.sock); | ||||
| 	ses.sock = -1; | ||||
| 	dropbear_close("Exited normally"); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| /* failure exit - format must be <= 100 chars */ | ||||
| static void svr_dropbear_exit(int exitcode, const char* format, va_list param) { | ||||
| void svr_dropbear_exit(int exitcode, const char* format, va_list param) { | ||||
| 
 | ||||
| 	char fmtbuf[300]; | ||||
| 
 | ||||
| @ -205,7 +190,7 @@ static void svr_dropbear_exit(int exitcode, const char* format, va_list param) { | ||||
| } | ||||
| 
 | ||||
| /* priority is priority as with syslog() */ | ||||
| static void svr_dropbear_log(int priority, const char* format, va_list param) { | ||||
| void svr_dropbear_log(int priority, const char* format, va_list param) { | ||||
| 
 | ||||
| 	char printbuf[1024]; | ||||
| 	char datestr[20]; | ||||
| @ -236,3 +221,13 @@ static void svr_dropbear_log(int priority, const char* format, va_list param) { | ||||
| 		fprintf(stderr, "[%d] %s %s\n", getpid(), datestr, printbuf); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /* called when the remote side closes the connection */ | ||||
| static void svr_remoteclosed() { | ||||
| 
 | ||||
| 	close(ses.sock); | ||||
| 	ses.sock = -1; | ||||
| 	dropbear_close("Exited normally"); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user