|  | @@ -126,6 +126,13 @@ typedef int event_format_t;
 | 
	
		
			
				|  |  |  static void connection_printf_to_buf(control_connection_t *conn,
 | 
	
		
			
				|  |  |                                       const char *format, ...)
 | 
	
		
			
				|  |  |    CHECK_PRINTF(2,3);
 | 
	
		
			
				|  |  | +static void send_control_event_impl(uint16_t event, event_format_t which,
 | 
	
		
			
				|  |  | +                                    const char *format, va_list ap)
 | 
	
		
			
				|  |  | +  CHECK_PRINTF(3,0);
 | 
	
		
			
				|  |  | +static int control_event_status(int type, int severity, const char *format,
 | 
	
		
			
				|  |  | +                                va_list args)
 | 
	
		
			
				|  |  | +  CHECK_PRINTF(3,0);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  static void send_control_done(control_connection_t *conn);
 | 
	
		
			
				|  |  |  static void send_control_event(uint16_t event, event_format_t which,
 | 
	
		
			
				|  |  |                                 const char *format, ...)
 | 
	
	
		
			
				|  | @@ -3918,6 +3925,7 @@ control_event_my_descriptor_changed(void)
 | 
	
		
			
				|  |  |  static int
 | 
	
		
			
				|  |  |  control_event_status(int type, int severity, const char *format, va_list args)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +  char *user_buf = NULL;
 | 
	
		
			
				|  |  |    char format_buf[160];
 | 
	
		
			
				|  |  |    const char *status, *sev;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -3949,13 +3957,15 @@ control_event_status(int type, int severity, const char *format, va_list args)
 | 
	
		
			
				|  |  |        log_warn(LD_BUG, "Unrecognized status severity %d", severity);
 | 
	
		
			
				|  |  |        return -1;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  if (tor_snprintf(format_buf, sizeof(format_buf), "650 %s %s %s\r\n",
 | 
	
		
			
				|  |  | -                   status, sev, format)<0) {
 | 
	
		
			
				|  |  | +  if (tor_snprintf(format_buf, sizeof(format_buf), "650 %s %s\r\n",
 | 
	
		
			
				|  |  | +                   status, sev)<0) {
 | 
	
		
			
				|  |  |      log_warn(LD_BUG, "Format string too long.");
 | 
	
		
			
				|  |  |      return -1;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +  tor_vasprintf(&user_buf, format, args);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  send_control_event_impl(type, ALL_FORMATS, format_buf, args);
 | 
	
		
			
				|  |  | +  send_control_event(type, ALL_FORMATS, "%s %s", format_buf, user_buf);
 | 
	
		
			
				|  |  | +  tor_free(user_buf);
 | 
	
		
			
				|  |  |    return 0;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |