fix init leak if network interface not found
If at startup the requested interface cannot be found (or no suitable interface exists), the code failed to release all memory allocated in the process. Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
		
							parent
							
								
									d16264fd82
								
							
						
					
					
						commit
						d91e7b34c9
					
				
					 1 changed files with 5 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -1330,13 +1330,10 @@ err_set_ext_address:
 | 
			
		|||
    ddsrt_free (n);
 | 
			
		||||
  }
 | 
			
		||||
err_set_recvips:
 | 
			
		||||
  {
 | 
			
		||||
    int i;
 | 
			
		||||
    for (i = 0; i < gv.n_interfaces; i++)
 | 
			
		||||
      ddsrt_free (gv.interfaces[i].name);
 | 
			
		||||
  }
 | 
			
		||||
err_find_own_ip:
 | 
			
		||||
    ddsi_tran_factories_fini ();
 | 
			
		||||
  for (int i = 0; i < gv.n_interfaces; i++)
 | 
			
		||||
    ddsrt_free (gv.interfaces[i].name);
 | 
			
		||||
  ddsi_tran_factories_fini ();
 | 
			
		||||
err_udp_tcp_init:
 | 
			
		||||
  if (config.tp_enable)
 | 
			
		||||
    ddsrt_thread_pool_free (gv.thread_pool);
 | 
			
		||||
| 
						 | 
				
			
			@ -1665,11 +1662,8 @@ DDSRT_WARNING_MSVC_ON(6001);
 | 
			
		|||
    ddsrt_free (n);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    int i;
 | 
			
		||||
    for (i = 0; i < (int) gv.n_interfaces; i++)
 | 
			
		||||
      ddsrt_free (gv.interfaces[i].name);
 | 
			
		||||
  }
 | 
			
		||||
  for (int i = 0; i < (int) gv.n_interfaces; i++)
 | 
			
		||||
    ddsrt_free (gv.interfaces[i].name);
 | 
			
		||||
 | 
			
		||||
  ddsi_serdatapool_free (gv.serpool);
 | 
			
		||||
  nn_xmsgpool_free (gv.xmsgpool);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue