|  | @@ -238,6 +238,7 @@ static config_var_t option_vars_[] = {
 | 
	
		
			
				|  |  |    V(ExtendAllowPrivateAddresses, BOOL,     "0"),
 | 
	
		
			
				|  |  |    VPORT(ExtORPort,               LINELIST, NULL),
 | 
	
		
			
				|  |  |    V(ExtORPortCookieAuthFile,     STRING,   NULL),
 | 
	
		
			
				|  |  | +  V(ExtORPortCookieAuthFileGroupReadable, BOOL, "0"),
 | 
	
		
			
				|  |  |    V(ExtraInfoStatistics,         BOOL,     "1"),
 | 
	
		
			
				|  |  |    V(FallbackDir,                 LINELIST, NULL),
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -6843,11 +6844,14 @@ config_maybe_load_geoip_files_(const or_options_t *options,
 | 
	
		
			
				|  |  |   *  in <b>cookie_out</b>.
 | 
	
		
			
				|  |  |   *  Then write it down to <b>fname</b> and prepend it with <b>header</b>.
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  | + *  If <b>group_readable</b> is set, set <b>fname</b> to be readable
 | 
	
		
			
				|  |  | + *  by the default GID.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   *  If the whole procedure was successful, set
 | 
	
		
			
				|  |  |   *  <b>cookie_is_set_out</b> to True. */
 | 
	
		
			
				|  |  |  int
 | 
	
		
			
				|  |  |  init_cookie_authentication(const char *fname, const char *header,
 | 
	
		
			
				|  |  | -                           int cookie_len,
 | 
	
		
			
				|  |  | +                           int cookie_len, int group_readable,
 | 
	
		
			
				|  |  |                             uint8_t **cookie_out, int *cookie_is_set_out)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    char cookie_file_str_len = strlen(header) + cookie_len;
 | 
	
	
		
			
				|  | @@ -6880,6 +6884,14 @@ init_cookie_authentication(const char *fname, const char *header,
 | 
	
		
			
				|  |  |      goto done;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#ifndef _WIN32
 | 
	
		
			
				|  |  | +  if (group_readable) {
 | 
	
		
			
				|  |  | +    if (chmod(fname, 0640)) {
 | 
	
		
			
				|  |  | +      log_warn(LD_FS,"Unable to make %s group-readable.", escaped(fname));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* Success! */
 | 
	
		
			
				|  |  |    log_info(LD_GENERAL, "Generated auth cookie file in '%s'.", escaped(fname));
 | 
	
		
			
				|  |  |    *cookie_is_set_out = 1;
 |