|  | @@ -198,7 +198,6 @@ gid_t get_gid(const char *name)
 | 
	
		
			
				|  |  |      return grp == NULL ? -1 : grp->gr_gid;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  int main(int argc, char **argv)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	int c, daemonize = 0;
 | 
	
	
		
			
				|  | @@ -225,7 +224,7 @@ int main(int argc, char **argv)
 | 
	
		
			
				|  |  |  			gid = get_gid(optarg);
 | 
	
		
			
				|  |  |  			break;
 | 
	
		
			
				|  |  |  		case 'm':
 | 
	
		
			
				|  |  | -			um = atoi(optarg);
 | 
	
		
			
				|  |  | +			um = strtol(optarg, 0, 8);
 | 
	
		
			
				|  |  |  			break;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -246,9 +245,9 @@ int main(int argc, char **argv)
 | 
	
		
			
				|  |  |  		free(pidfilename);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if (uid != (uid_t)-1) setuid(uid);
 | 
	
		
			
				|  |  | -	if (gid != (gid_t)-1) setgid(gid);
 | 
	
		
			
				|  |  |  	if (um != (mode_t)-1) umask(um);
 | 
	
		
			
				|  |  | +	if (gid != (gid_t)-1) setgid(gid);
 | 
	
		
			
				|  |  | +	if (uid != (uid_t)-1) setuid(uid);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if (daemonize) {
 | 
	
		
			
				|  |  |  		if (daemon(0, 0) == -1) {
 |