main: drop privileges right after reading the config
This is the second part of fixing bug #74. I lets tinyproxy create its log and pid files as the user as which it is running, so that later on at SIGHUP, the log file can successfully be reopened. Michael
This commit is contained in:
		
							parent
							
								
									2235a97f05
								
							
						
					
					
						commit
						7a9abc2a04
					
				
							
								
								
									
										15
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/main.c
									
									
									
									
									
								
							@ -393,6 +393,14 @@ main (int argc, char **argv)
 | 
				
			|||||||
                exit (EX_SOFTWARE);
 | 
					                exit (EX_SOFTWARE);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Switch to a different user if we're running as root */
 | 
				
			||||||
 | 
					        if (geteuid () == 0) {
 | 
				
			||||||
 | 
					                change_user (argv[0]);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					                log_message (LOG_WARNING,
 | 
				
			||||||
 | 
					                             "Not running as root, so not changing UID/GID.");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ret = setup_logging ();
 | 
					        ret = setup_logging ();
 | 
				
			||||||
        if (ret != 0) {
 | 
					        if (ret != 0) {
 | 
				
			||||||
                exit (EX_SOFTWARE);
 | 
					                exit (EX_SOFTWARE);
 | 
				
			||||||
@ -438,13 +446,6 @@ main (int argc, char **argv)
 | 
				
			|||||||
                exit (EX_OSERR);
 | 
					                exit (EX_OSERR);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Switch to a different user if we're running as root */
 | 
					 | 
				
			||||||
        if (geteuid () == 0)
 | 
					 | 
				
			||||||
                change_user (argv[0]);
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
                log_message (LOG_WARNING,
 | 
					 | 
				
			||||||
                             "Not running as root, so not changing UID/GID.");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (child_pool_create () < 0) {
 | 
					        if (child_pool_create () < 0) {
 | 
				
			||||||
                fprintf (stderr,
 | 
					                fprintf (stderr,
 | 
				
			||||||
                         "%s: Could not create the pool of children.\n",
 | 
					                         "%s: Could not create the pool of children.\n",
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user